Ich habe diese Methode server Daten für Bootstrap DatentabellenSuchabfrage nach Union
public function datatable(Request $request)
{
$organizations = DB::table('organizations')
->join('customers', function ($join)
{
$join->on('organizations.id', '=', 'customers.customer_id')
->where('customers.customer_class', '=', 'Organization');
})
->select([
'customers.id',
'organizations.name',
]);
$contacts = DB::table('contacts')
->join('customers', function ($join)
{
$join->on('contacts.id', '=', 'customers.customer_id')
->where('customers.customer_class', '=', 'Contact');
})
->select([
'customers.id',
'contacts.name',
]);
$customers = $organizations->union($contacts);
return Datatables::of($customers)
->editColumn('name', function($customers) {
return '<a href="'.route('customers.show', $customers->id).'">'.$customers->name.'</a>';
})
->make(true);
}
Ich denke, zu verarbeiten, was Tables tut führt WHERE LIKE Suche auf einer mitgelieferten Abfrage. Das Problem ist, dass wherecer ich versuche, Suche durchzuführen, gibt es zufällige Ergebnisse. Die Antwort here schlägt vor, dass ich die UNION in der FROM-Klausel haben müssen einzubetten, wie
SELECT *
FROM (SELECT * FROM TableA
UNION
SELECT * FROM TableB
) AS U
WHERE U.Col1 = ...
Aber ich kann meinen Kopf nicht wickeln aroud, wie man das in einem Laravel Query Builder.
Falls relevant es ist, hier JS-Code
$(function() {
$('#customer-table').DataTable({
processing: true,
serverSide: true,
bfilter: false,
ajax: "{{route('customers.datatable')}}",
columns: [
{ data: 'name'},
]
});
});
Können Sie die Fehler anzeigen, die Sie erhalten, bitte – RiggsFolly
Es gibt keine Fehler. Das Problem ist, dass Suchergebnisse nicht konsistent mit Suchzeichenfolge sind –