laravel 查询数组请求时
Posted
技术标签:
【中文标题】laravel 查询数组请求时【英文标题】:laravel when query with array requests 【发布时间】:2021-09-20 16:55:55 【问题描述】:我在数组 $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)
当颜色请求中有数组数据时触发
但在内部查询它的返回 boolean
而不是原始数组数据
帮助!
【问题讨论】:
第一个参数将始终被评估为true
或false
,因此如果您执行!$colors->isEmpty()
,它会自动转换为boolean
,这就是$colors
会的,所以你必须使用第一个代码,而不是第二个。那么,你对第一个有什么问题?
@matiaslauriti 第一个问题是对象总是true
一个解决方案是用户@lagbox 共享(最好的一个),另一个解决方案但真的不干净是这样做:$colors->isNotEmpty() ? $colors : false
。
【参考方案1】:
如果您真的想在该集合中使用when
方法,您可以在$colors
变量中使用:
Product::when($colors->isNotEmpty(), function ($query) use ($colors)
...
)...
【讨论】:
$colors->isNotEmpty() ? $colors : false
这个修复我的代码以上是关于laravel 查询数组请求时的主要内容,如果未能解决你的问题,请参考以下文章