Ich entwickle ein Suchmodul in Laravel 5.1, die Unternehmen mit ihren Telefonnummern (Aufzeichnungen) sucht.Laravel Suche Logik Problem
-- TABLES
businesses: id, name, status
records: id, business_id, number, note
Die Suche muss Ergebnisse zurückgeben, wenn sowohl Geschäftsname UND Datensätze Hinweis für ein bestimmtes Schlüsselwort gefunden werden. Momentan gibt es alle Geschäfte zurück, selbst wenn die verbundenen Aufzeichnungen (Anmerkung) nicht zusammenpassen. Dabei
ist der Code: -
$keywords = explode(" ", Request::get('keywords'));
$businesses = App\Business;
$businesses = $businesses->where(function ($query) use ($keywords) {
foreach ($keywords as $name) {
$query->orWhere('name', 'like', "$name%");
}
});
$businesses = $businesses->with(['records' => function ($query) use ($keywords) {
$query->where('note', 'like', '%'.$keywords[0].'%');
foreach ($keywords as $note) {
$query->orWhere('note', 'like', "%$note%");
}
}]);
$businesses = $businesses->where('status', 1);
$businesses = $businesses->paginate($limit);
return $businesses;
Können Sie schreiben, was Sie gerade SQL versuchen? Manchmal hilft mir das, komplexe Geschäftslogiken wie diese zu durchbrechen. – tptcat
@tptcat, keine Idee, wie man in SQL schreibt. Die Abfrage besteht einfach darin, Schlüsselwörter zu Firmen-> Name AND records-> note zu finden. Aber die obige Codelogik gibt alle Unternehmen zurück, auch wenn sie in den Records-> Note nicht gefunden werden. –
Warum nicht dieses Paket verwenden und etwas Zeit sparen. https://github.com/nicolaslopezj/searchable – Digitlimit