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