Laravel 搜索系统

Laravel search system

   Database

product_name status product_code tag
Product 1 1 PDT1 new
Product 2 0 PDT2 new
Product 3 1 PDT3 new

我想要那些状态为 1 的数据。但是该代码无法正常工作。它returns 所有数据。即使状态为 0。但是我想要那些状态为 1 的数据。但是我该怎么做呢?

                 $search_data = Product::where('product_name','LIKE',"%{$search}%")
                               ->orWhere('tag','LIKE',"%{$search}%")
                               ->orWhere('product_code',$search)
                               ->whereStatus(1)
                              ->get();
                  return $search_data; 

试试这个

return Product::Where('status',1)->Where(function($query) use ($search){
$query->where('product_name','LIKE',"%{$search}%")
    ->orWhere('tag','LIKE',"%{$search}%")
    ->orWhere('product_code',$search)
}
->get();
            

您应该将搜索包装在 where 闭包中。

$search_data = Product::query()
        ->whereStatus(1)
        ->where(function($query) use ($search){
            return $query->where('product_name', 'LIKE', "%{$search}%")
        ->orWhere('tag', 'LIKE', "%{$search}%")
        ->orWhere('product_code', $search);
        })->get()
                  return $search_data;