0
私はLaravel 5.1で電話番号(レコード)と共に企業を検索する検索モジュールを開発しています。Laravel検索ロジックの問題
-- TABLES
businesses: id, name, status
records: id, business_id, number, note
特定のキーワードに対してビジネス名とレコードの両方のメモがある場合は、検索結果を返す必要があります。現時点では、関連付けられたレコード(注釈)が一致しない場合でもすべてのビジネスを返します。
$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;
あなたはまっすぐなSQLで何をしようとしていますか?時には、このような複雑なビジネスロジックを壊すのに役立ちます。 – tptcat
@tptcat、SQLの記述方法はありません。照会は単にビジネス上のキーワード - >名前ANDレコード - >を見つけることです。しかし、上記のコードロジックは、レコード - >メモに一致するものが見つからなくても、すべてのビジネスを返します。 –
このパッケージを使用して時間を節約してみましょう。 https://github.com/nicolaslopezj/searchable – Digitlimit