这是我的laravel查询
$Product = Product::select('id','ProductWorkpiece','ProductCategory','ProductName','ProductImage','ProductSubCategory')
->where('ProductCategory',$category)
->where(function ($query) use ($ProductWorkpiece,$ProductMaterial,$ProductSubCategory,$ProductBrand) {
foreach($ProductBrand as $key => $ProductBrandd) {
if (!empty($ProductBrandd) && empty($subcategory)) {
$query->orWhere('ProductBrand', '=', $ProductBrandd);
}
foreach($ProductSubCategory as $key => $subcategory) {
if (!empty($ProductBrandd) && !empty($subcategory)) {
$query->where('ProductSubCategory', '=', $subcategory);
}
}
}
})->where('Status','=','1')->get();
实际上有效,但有一个奇怪的,当我点击1复选框工作,但当我点击2为什么不通过例子工作我有一个名为sisma的品牌,并有2个产品子类别名称激光打标机品牌sisma当我检查品牌sisma,出2个产品,当我检查子类别Dot Marking Machine时,两个项目都缺失了。这是正确的,当我检查子类别激光打标机和2产品没有出来,当我取消选中点标记机的东西出来,我称之为奇怪,它应该是没有取消选中可以看到2产品
如果你仍然不明白,观看这个视频只有12秒qazxsw poi
这是我的手动sql,它运行良好
https://youtu.be/fY417NsZmHI
$ ProductSubCategory的内容和类型
SELECT * FROM Product WHERE ProductCategory = 'Marking' AND ProductBrand = 'Sisma' and ProductSubCategory = 'Dot Marking Machine'
or ProductSubCategory = 'Laser Marking Machine'
$ ProductBrand的内容和类型
Array
(
[0] => Dot Marking Machine
[1] => Laser Marking Machine
)
像这样重写查询有助于获得所需的结果组合
Array
(
[0] => Sisma
)