J’ai un problème avec une table rendue avec DataTable Bootstrap Jquery dans mon projet (construit dans Laravel 5).
La recherche (filtrage) fonctionne pour les colonnes générées à partir d’une requête SQL, mais pour les colonnes générées avec add_column ne fonctionne pas.
Le code javascript du fichier php:
var oTable; $(document).ready(function() { oTable = $('#table').dataTable({ "sDom" : "<'row'r>t<'row'>", "sPaginationType" : "bootstrap", "bProcessing" : true, "bServerSide" : true, "sAjaxSource" : "{{ URL::to('employee/outputs/data/'.$invoice_status) }}", "fnDrawCallback" : function(oSettings) { $(".iframe").colorbox({ iframe : true, width : "60%", height : "60%", onClosed : function() { window.location.reload(); } }); } }); });
Le code de Laravel Controller:
public function data($invoice_status) { $outputs = Output::join('my_companies', 'my_companies.id', '=', 'outputs.my_company_id') ->join('my_twigs', 'my_twigs.id', '=', 'outputs.my_branch_id') ->select(array('outputs.id', 'my_companies.name as my_company_name', 'my_twigs.name as my_branch_name', 'outputs.output_at', 'outputs.invoice_id', 'outputs.customer_type')) ->where('outputs.invoice_status', $invoice_status) ->where('outputs.is_deleted', false) ->orderBy('outputs.output_at', 'DESC'); return Datatables::of($outputs) ->add_column('customer_name', '{{ App\Output::getCustomerName(App\Output::find($id)->customer_type,App\Output::find($id)->customer_id) }}') ->add_column('auto', '{{ App\Output::find($id)->vehicle_number }}') ->add_column('observations', '{{ App\Output::find($id)->observations }}') ->make(); }
METTRE À JOUR:
Dans ma situation, je comprends que je ne peux pas chercher dans la colonne ajoutée avec ad_column. Donc, je veux implémenter une fonction à partir d’un modèle, comme App \ Output_Detail :: getAmountDue dans la zone SELECT. J’ai essayé avec DB: RAW. Cela ne fonctionne pas, la syntaxe est correcte, mais sans résultat sur la page Web:
$outputs = Output::join('my_companies', 'my_companies.id', '=', 'outputs.my_company_id') ->join('my_twigs', 'my_twigs.id', '=', 'outputs.my_branch_id') ->select(array('outputs.id', 'my_companies.name as my_company_name', 'my_twigs.name as my_branch_name', 'outputs.output_at', 'outputs.invoice_id', 'outputs.customer_type'), DB::RAW(":amount as amount_due",array('amount' => App\Output_Detail::getAmountDue($id)))) ->where('outputs.invoice_status', $invoice_status) ->where('outputs.is_deleted', false) ->orderBy('outputs.output_at', 'DESC');