提问者:小点点

Laravel雄辩的5.3渴望/懒惰加载相关模型与多个限制


我利用了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条记录,或者根本没有,所以我目前对如何正确处理这一点感到困惑。有人能在这方面给我一些指导吗?

    任何帮助都非常感谢,提前谢谢你。干杯!


  • 共1个答案

    匿名用户

    通过使用(主模型ID列表)中的WHERE foreign\u key\u列,通过第二个查询实现即时加载。使用这样的查询,不可能根据每个模型设置限制,除非有其他条件可以进一步过滤结果。

    您有3种选择:

    • 让雄辩的渴望加载所有内容,并根据需要在PHP中过滤结果
    • 通过仅获取主模型,然后分别查询每个模型与其各自限制的关系,来执行您自己的快速加载
    • 在组表中添加一个标志列,该列允许您标记每个组应返回的行