1
を使用して、ネストされたOR条件を作成しますか?私はEloquentのwhereOr
メソッドを使ってみましたが、生成されたSQLでは何もしないようです。しかし、たとえそれがあったとしても、私の現在のコードが、私が探しているもののように埋め込まれているかどうかはわかりません。は、私のようなものを作りたいLaravel雄弁
私が持っているもののいくつか:
$docSearch = DB::table('documents');
if ($chapter > 0) {
$docSearch->where('chapter', $chapter);
}
$existingManagementArray = Management::getAllManagementIDsAsArray();
if ($management_id > 0 && in_array($management_id, $existingManagementArray)) {
$docSearch->where('management_id', $management_id);
} else {
$docSearch->whereIn('management_id', $existingManagementArray);
}
if (strlen($term) > 0) {
//HELP! These don't seem to change the SQL
$docSearch->whereOr('title', 'like', "%$term%");
$docSearch->whereOr('desc', 'like', "%$term%");
}
DB::enableQueryLog();
$allFoundDocs = $docSearch->get();
dd(DB::getQueryLog());
何が起こっているのか少し説明できますか?私はEloquentのドキュメントで関数の受け渡しを見たことがありません。 – zundi
@ zundi、まあ、 'where()'メソッドにクロージャ(関数)を渡し、高度な制約を 'where()'親に追加することができます。ネストされた 'where()'の複数のレベルを行うことができます。いくつかのデータをクロージャに渡したい場合は、 'use()'を使うのを忘れないでください。 –
新しい何かを学んだ、ありがとうAlexey – zundi