我在Lazy / Eager Loading中充分利用Laravel的雄辩,并遇到了一个有趣的问题。
说明
问题:
我需要手动设置每组退回商品数量的限制
此处的区别在于限制数会根据每个组的优先级更改
因此,例如,雄辩"选择"声明将获得所有三个组,但将组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条记录或根本没有,所以我现在很困惑如何正确处理这个问题。有人可以给我一些指导吗?
非常感谢任何帮助,谢谢你提前。 干杯!
答案 0 :(得分:2)
通过使用WHERE foreign_key_column IN (list of primary model IDs)
的第二个查询实现预先加载。有了这样的查询,就不可能在每个模型的基础上设置限制,除非有一些其他条件可以进一步过滤结果。
您有3个选项: