laravel 查询数组请求时

laravel when query with array requests

我在数组中有颜色请求 $colors = collect($request->colors);

我正在尝试在查询构建器不为空时发出请求

$products = Product::when($colors, function ($query, $colors) {
   return $query->whereHas('colors', function (Builder $query) use ($colors) {
     $query->whereIn('slug',  $colors->toArray());
    });
 })

应该不是触发颜色查询

当我尝试

when(!$colors->isEmpty(), function ($query, $colors)

颜色请求中有数组数据时触发 但在内部查询其 return boolean 而不是原始数组数据

帮助!

如果你真的想在那个集合中使用 when 方法,你可以在 $colors 变量范围内:

Product::when($colors->isNotEmpty(), function ($query) use ($colors) {
    ...
})...