我利用了Laravel的雄辩,通过懒惰/渴望加载,遇到了一个有趣的问题。
说明:
问题:
>
我需要手动设置每组返回项目的数量限制
这里的区别在于,限制数量根据每个组的优先级而变化
例如,雄辩的“select”语句将获得所有三个组,但将组1中返回的项目数量限制为仅3个项目,组2仅为8个项目,组3仅为17个项目。
我试图做的是:
>
控制器中获取记录的代码
return Account::with([
'group_list.item'
])->where('group_id', $my->group_id)
->orderBy('group_priority_num', 'ASC')
->take(3) <----Gets three groups
->get(['group_priority_num','group_title','group_id']);
群模型
public function group_list() {
// Example
$this->number = [4 , 7, 15];
return $this->group()->limit($this->number)->groupBy('user_group_id_fk');
}
这只返回1条记录,或者根本没有,所以我目前对如何正确处理这一点感到困惑。有人能在这方面给我一些指导吗?
任何帮助都非常感谢,提前谢谢你。干杯!
通过使用(主模型ID列表)中的WHERE foreign\u key\u列,通过第二个查询实现即时加载。使用这样的查询,不可能根据每个模型设置限制,除非有其他条件可以进一步过滤结果。
您有3种选择: