Laravel SQL问题与查询哪里和/或条件丢失

时间:2020-10-09 09:11:33

标签: mysql laravel eloquent

我试图在laravel中编写SQL查询:

select * from products where deleted=0 AND 
(('name_ru','LIKE', '%' . $request->q_search . '%')
OR ('name_en','LIKE', '%' . $request->q_search . '%')
OR ('name_lv','LIKE', '%' . $request->q_search . '%'))

现在我有:

$products = DB::table('product')
   ->select('id','name_lv', 'name_ru', 'name_en','price','desc')
   ->where('deleted',0)
   ->where('name_lv','LIKE', '%' . $request->q_search . '%')
   ->orWhere('name_ru','LIKE', '%' . $request->q_search . '%')
   ->orwhere('name_en','LIKE', '%' . $request->q_search . '%')
   ->distinct()
   ->orderBy('price', 'desc')
   ->paginate(10,['*'], 'found')
   ->onEachSide(6);

我的问题是条件删除= 0,我的SQL忽略了它。怎么了?感谢您的建议!

1 个答案:

答案 0 :(得分:2)

您可以像使用where(function(){})一样使用where AND (.. OR ..)

$products = DB::table('product')
    ->select('id', 'name_lv', 'name_ru', 'name_en', 'price', 'desc')
    ->where(function ($q) use ($request) {
        $q->where('name_lv', 'LIKE', '%' . $request->q_search . '%')
            ->orWhere('name_ru', 'LIKE', '%' . $request->q_search . '%')
            ->orwhere('name_en', 'LIKE', '%' . $request->q_search . '%');
    })
    ->where('deleted', 0)
    ->distinct()
    ->orderBy('price', 'desc')
    ->paginate(10, ['*'], 'found')->onEachSide(6);
相关问题