laravel,查询生成器,(或)其中查询未按预期工作

问题描述 投票:1回答:1

这是我的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
)
php mysql sql laravel laravel-5
1个回答
0
投票

像这样重写查询有助于获得所需的结果组合

Array
(
    [0] => Sisma
)
© www.soinside.com 2019 - 2024. All rights reserved.