我需要帮助才能在下面的代码中找出我的错误:
public function finderfunction(Request $request) {
// get array of categories that signed to finder (1,2,3)
$finder = Finder::with('categories')->get();
$catid = [];
foreach($finder as $findd){
foreach($findd->categories as $finddcat){
$catid[] = $finddcat->id;
}
}
//get products with those categories (1,2,3) (first where)
$results = Product::where('category_id', $catid)
//get products with those categories and same sku's (second where)
->where('sku', $request->input('brand_id'))
->groupBy('products.sku')
->get();
return view('front.finder', compact('results'));
}
如您所见,我在上面的代码中发表了评论,这是我尝试实现的目标:
答案 0 :(得分:2)
尝试使用 whereIn 执行代码,例如此代码Product::whereIn('category_id', $catid)
。希望你能得到你想要的结果。
答案 1 :(得分:1)
首先,你的$ catid变量是一个数组。你不能将数组作为参数传递给eloquent where。您可以将数组作为
传递$users = DB::table('users')
->whereIn('id', [1, 2, 3])
->get();
其次,检查你的$ catid是否成功获得了价值。
第三,要在条件中写多个,你可以将它作为数组传递给 -
$users = DB::table('users')->where([
['status', '=', '1'],
['subscribed', '<>', '1'],
])->get();
https://laravel.com/docs/5.6/queries
请参阅此链接以获取进一步的帮助。