学习eloquent/laravel
。我有一个集合:
$regions = Region::with('neighbors')
->join('cards', 'cards.id', '=', 'regions.risk_card_id')
->get();
我有一个或多个行:
$regionsPerUser = 8;
我这样做是为了提取随机记录:
$regions = $regions->random($regionsPerUser);
但我需要在$regions->user_id
不为空的情况下过滤此选择。
有没有办法过滤随机调用作为链接的一部分?
我试过这个不起作用:
$regions = $regions->whereNotNull('user_id')->random($regionsPerUser);
我想知道是否有办法在一个链式声明中巧妙地做到这一点,而不是走向过滤器/地图的路径。
答案 0 :(得分:2)
为什么不将条件添加到sql-query:
$regions = Region::with('neighbors')
->join('cards', 'cards.id', '=', 'regions.risk_card_id')
->whereNotNull('user_id')
->inRandomOrder()
->limit($regionsPerUser)
->get();
如果您已经有一个集合,那么您可以执行以下操作:
$regions = $regions
->filter(function ($value) {
return !is_null($value['user_id']);
})
->random($regionsPerUser);