【发布时间】:2018-07-26 09:29:42
【问题描述】:
我正在尝试包含 for loop 以向我的查询添加 where 条件,它在 $ProductSubCategory 上返回 undefined offset 1 错误。 $ProductSubCategory 的内容是一个字符串数组,我想作为条件包含在内。
$Product = Product::select('id','ProductWorkpiece','ProductCategory','ProductName','ProductImage','ProductSubCategory')
->where('Status','=','1')
->Where(function ($query) use ($ProductSubCategory) {
for ($i=1; $i <= $ProductSubCategory ; $i++) {
$Product->where('ProductSubCategory', '=', $ProductSubCategory[$i]);
}
})->get();
https://pastebin.com/uDSywsQv(Laravel 查询生成器 sn-p)
这是我想使用 Laravel 的查询构建器复制的 MySQL 查询,我该怎么做?
SELECT
`id`,
`ProductWorkpiece`,
`ProductCategory`,
`ProductName`,
`ProductImage`,
`ProductSubCategory`
FROM
`Product`
WHERE
`ProductSubCategory` = 'Laser Marking Machine' OR
`ProductSubCategory` = 'Dot Marking Machine' OR
`ProductSubCategory` = 'Digital Microscope' AND
`Status` = '1'
https://pastebin.com/AMWCz32g(所需的 MySQL sn-p)
【问题讨论】:
-
$i <= $ProductSubCategory-- 改为$i <= count($ProductSubCategory) -
Eloquent 查询返回一个集合,所以如果这是一个集合,你也可以使用
$i <= $ProductSubCategory->count()。 -
这真是一个糟糕的解决方案。你为什么不使用
whereIn作为你的代码。类似于:$products = Product::whereStatus(1)->whereIn(''ProductSubCategory', $ProductSubCategory) ->get其中$ProductSubCategory是一个数组。你可以在 Laravel 框架中保持你的代码非常干净。这样做是为了避免将来的麻烦
标签: sql laravel laravel-5 query-builder