Pivot阵列上的Laravel 5.5过滤器

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]);

我的请求URL:

毫无疑问

$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
where
name
类似于%z%并且存在)(从
eat\u categories
internal join
eat\u categories
on
eat\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,它不是。
其中
不能与字符串一起工作,因此解决方案是
分解
。如果它不是
分解
,那么你为什么要在答案中包含它?我没有添加到答案中。请查看我给你的示例你的问题中没有
分解
,而你的答案中有它回答。