1
我想創造一些像創建嵌套OR條件:使用Laravel雄辯
select * from documents where 'chapter'=3 and 'section'=4 and ('title' like '%abc% OR 'desc' like %abc%);
我怎樣才能做到這一點使用雄辯?我嘗試過使用Eloquent的方法whereOr
方法,但似乎沒有在生成的SQL中做任何事情。但是,即使他們這樣做了,我也不確定我現在的代碼會如何讓他們嵌入我想要的內容中。
一些我的本錢:
$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,你可以將closure(function)傳遞給'where()'方法並向父'where()'添加高級約束。你可以做多層嵌套的'where()'。如果你想傳遞一些數據給閉包,不要忘記使用'use()'。 –
學到了新的東西,謝謝阿列克謝 – zundi