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 de la requête SQL, mais les colonnes générées avec add_column ne fonctionnent pas.
Le code javascript du fichier php:
var oTable; $(document).ready(function() { oTable = $('#table').dataTable({ "sDom" : "<'row'<'col-md-6'l><'col-md-6'f>r>t<'row'<'col-md-6'i><'col-md-6'p>>", "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_branches', 'my_branches.id', '=', 'outputs.my_branch_id') ->select(array('outputs.id', 'my_companies.name as my_company_name', 'my_branches.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 rechercher dans la colonne ajoutée avec ad_column. Alors, je veux implémenter la 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_branches', 'my_branches.id', '=', 'outputs.my_branch_id') ->select(array('outputs.id', 'my_companies.name as my_company_name', 'my_branches.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');