Php Laravel查询生成器以逗号分隔的列表形式传递多个参数不起作用

Php Laravel查询生成器以逗号分隔的列表形式传递多个参数不起作用,php,laravel-5,laravel-query-builder,Php,Laravel 5,Laravel Query Builder,我正在使用Spatial/laravel查询生成器制作范围过滤器。 我在文档中读到: 您甚至可以通过传递逗号向作用域传递多个参数 过滤器的单独列表: GET /events?filter[starts_between]=2018-01-01,2018-12-31 因此,我在模型中制作了一个范围过滤器,如下所示: public function scopeStartsBetween(Builder $query, $dates): Builder { dd($dates); r

我正在使用Spatial/laravel查询生成器制作范围过滤器。 我在文档中读到:

您甚至可以通过传递逗号向作用域传递多个参数 过滤器的单独列表:

GET /events?filter[starts_between]=2018-01-01,2018-12-31
因此,我在模型中制作了一个范围过滤器,如下所示:

public function scopeStartsBetween(Builder $query, $dates): Builder
{
    dd($dates);

    return $query->whereBetween('created_at', array($dates[0], $dates[1]));
}
http://127.0.0.1:8000/?filter[starts_between]=2018-10-15,2018-10-17
我的请求如下所示:

public function scopeStartsBetween(Builder $query, $dates): Builder
{
    dd($dates);

    return $query->whereBetween('created_at', array($dates[0], $dates[1]));
}
http://127.0.0.1:8000/?filter[starts_between]=2018-10-15,2018-10-17
dd$日期的结果如下:


因此,多个参数的逗号分隔列表不起作用,或者我做错了什么?

问题是,多个参数应作为作用域函数的单独参数处理:

public function scopeStartsBetween(Builder $query, $from, $to): Builder
{
    return $query->whereBetween('created_at', array(Carbon::parse($from), Carbon::parse($to)));
}

这就解决了问题。

问题在于多个参数应作为作用域函数的单独参数处理:

public function scopeStartsBetween(Builder $query, $from, $to): Builder
{
    return $query->whereBetween('created_at', array(Carbon::parse($from), Carbon::parse($to)));
}
这就是关键。

类过滤器范围返回…$值

解释链接的含义

例如,在模型作用域函数中,我们必须使用相同的构造

public function scopeStartsBetween(Builder $query, ...$dates): Builder
类FilterScope返回…$values

解释链接的含义

例如,在模型作用域函数中,我们必须使用相同的构造

public function scopeStartsBetween(Builder $query, ...$dates): Builder

尝试filter[starts\u-between][]=2018-01-01和filter[starts\u-between][]=2018-12-31您能显示您的请求路线吗?@urfusion我发现了问题请查看我的答案:向上投票并接受,如果可能请尝试filter[starts\u-between][]=2018-01-01和filter[starts\u-between][]=2018-12-31您能为这个请求显示您的路线吗?@urfusion我发现了问题请查看我的答案:向上投票,如果可能请接受