Pivot阵列上的Laravel 5.5过滤器
我的请求URL: 毫无疑问Pivot阵列上的Laravel 5.5过滤器,laravel,laravel-5,laravel-5.5,Laravel,Laravel 5,Laravel 5.5,我的请求URL: 毫无疑问 $kitchen = $request->kitchen; $places = Place::where('name', 'like', '%' . $request->name . '%') ->whereHas('eatCategories', function($q) use($kitchen){ $q->whereIn('eat_category_id', [11,18]);
$kitchen = $request->kitchen;
$places = Place::where('name', 'like', '%' . $request->name . '%')
->whereHas('eatCategories', function($q) use($kitchen){
$q->whereIn('eat_category_id', [11,18]);
})->get();
当我写$kitchen而不是11,18时,它只作为11工作
我的模型:
public function eatCategories(){
return $this -> belongsToMany('App\EatCategory', 'eat_category_pivots');
}
这不起作用:
$kitchen = $request->kitchen;
$places = Place::where('name', 'like', '%' . $request->name . '%')
->whereHas('eatCategories', function($q) use($kitchen){
$q->whereIn('eat_category_id', [$kitchen]);
})->get();
您需要将代码更改为:
$q->whereIn('eat_categories.id', $kitchen);
此外,您需要在URL中使用不同的字符,如
,而不是,
,以使其正常工作:
http://localhost:8000/api/get-filter-places/z/11.18
然后仅使用将字符串转换为数组:
$kitchen = explode('.', $request->kitchen);
像这样使用分隔符
|
http://localhost:8000/api/get-过滤位置/z/11 | 18
试试这个:
$kitchen = explode('|', $request->kitchen);
$places = Place::where('name', 'like', '%' . $request->name . '%')
->whereHas('eatCategories', function($q) use($kitchen){
$q->whereIn('eat_category_id', $kitchen);
})->get();
我就是这样解决的
$kitchen = $request->kitchen;
$kitchen = explode(',', $request->kitchen);
$places = Place::where('name', 'like', '%' . $request->name . '%')
->whereHas('eatCategories', function($q) use($kitchen){
$q->whereIn('eat_category_id', $kitchen);
})->get();
你的模型和关系看起来怎么样?您可以在关系定义中添加透视数据它不是有效的URL,因为Im正在使用localhost这是exampleSQLSTATE[23000]:完整性约束冲突:where子句中的1052列“id”不明确(SQL:select*from
places
wherename
类似于%z%并且存在)(从eat\u categories
internal joineat\u categories
oneat\u categories
=eat\u categories
eat\u categories\u id
id
eat\u categories\u pivots
id
和id
in(18))所以,我给你的explode
解决方案与你的explode
解决方案无关,你自己解决了这个问题,对吗?你接受了一个家伙的答案,他只是简单地复制了相同的explode
解决方案,然后将
更改为另一个符号
。是的,问题是我没有写。[$kitchen]:)正确的代码$kitchenNo,它不是。其中
不能与字符串一起工作,因此解决方案是分解
。如果它不是分解
,那么你为什么要在答案中包含它?我没有添加到答案中。请查看我给你的示例你的问题中没有分解
,而你的答案中有它回答。