orwhere查询

v1uwarro  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(292)

这个问题在这里已经有答案了

orwhere vs where laravel 5.1(2个答案)
两年前关门了。
我试图找到的产品不是免费的产品和产品状态是积极的ie,1,但问题是它没有工作的方式,我希望与下面的查询。它让产品集合既不活跃,也与我想要的匹配免费。如何通过修改以下查询获得适当的输出?在这里 $query 是搜索关键字

$products = DB::table('products')                       
            ->where('products.name' , 'like', '%'.$query.'%')
            ->orWhere('products.tags','like','%'.$query.'%')               
            ->where('products.status','=',1)    
            ->where('products.price','!=',0)            
            ->groupBy('products.id')
            ->latest()
            ->paginate(3);
ilmyapht

ilmyapht1#

您需要封装您的orwhere:

$products = DB::table('products')
        ->where(function($q) use ($query){    
            $q->where('products.name' , 'like', '%'.$query.'%')
            ->orWhere('products.tags','like','%'.$query.'%');
        })               
        ->where('products.status','=',1)    
        ->where('products.price','!=',0)            
        ->groupBy('products.id')
        ->latest()
        ->paginate(3);

应该是这样的

SELECT * FROM 'products' 
WHERE (
    products.name like '%query%' OR 
    products.tags like '%query%'
) AND 
products.status = 1 AND 
products.price <> 0
GROUP BY products.id

相关问题