gpt4 book ai didi

laravel - 使用 Laravel Eloquent 创建嵌套的 OR 条件

转载 作者:行者123 更新时间:2023-12-05 03:10:22 25 4
gpt4 key购买 nike

我想创建这样的东西:

从 'chapter'=3 和 'section'=4 的文档中选择 * 和('title' like '%abc% OR 'desc' like %abc%);

我如何使用 Eloquent 做到这一点?我试过使用 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());

最佳答案

这应该适合你:

DB::table('documents')->where('chapter', 3)
->where('section', 4)
->where(function($q) use($abc) {
$q->where('title', 'like', '%'.$abc.'%')
->orWhere('desc', 'like', '%'.$abc.'%');
})->get();

Closure 传递到 where() 方法中指示查询构建器开始约束组。Closure 将接收查询构建器您可以使用它来设置应包含在括号组中的约束的实例。

Docs (称为参数分组的部分)

关于laravel - 使用 Laravel Eloquent 创建嵌套的 OR 条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40310485/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com