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;
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;