首页 > 解决方案 > Laravel 和 Where 不存在

问题描述

这是我的查询;

SELECT * FROM digital_cases WHERE name LIKE $request->name . '%' 
AND added_by IN (SELECT id FROM assistants WHERE firstname LIKE $request->addedBy . '%');

我试过这个:

$digital_cases = DB::table('digital_cases');

if ($request->has('caseName')) {
    $digital_cases = $digital_cases->where('name', 'LIKE', $request->caseName . '%');
    if ($request->has('addedBy')) {
        $addedBy = $request->addedBy;
        $digital_cases = $digital_cases->andWhere('added_by', 'IN', function ($digital_cases) use ($addedBy) {
            DB::table('assistants')->select('id')->whereIn('firstname', 'LIKE', $addedBy . '%');
        });
    }
}


$digital_cases = $digital_cases->get();

我在问题错误之前删除了,但现在一切正常。但我有一个错误:

方法 Illuminate\Database\Query\Builder::andWhere 不存在。

标签: phplaravel

解决方案


只需使用where().

默认情况下,Laravel 会假设你想做AND WHERE. 当您想使用时OR,您必须具体,即orWhere().


推荐阅读