首页 > 解决方案 > 获取所有相关记录 laravel

问题描述

我的表结构为

用户

id|name|is_active

事件

id|user_id(foreign key from user table)|event_name|is_active

事件用户(事件和用户的链接表)

id|user_id(from user table)|event_id(from event table)|is_active

记录

id|user_id(from user table)|event_id(from event table)|value|is_active

我想在登录后获取用户的所有相关记录

User (Object)
   |- Event(Object)
        |- Record
   |-Event2(Object)
        |- Record
        |- Record

请为此提出解决方案。我正在使用雄辩

正如建议的那样,我已经使用了答案,但是在提供 where 条件时,我没有得到想要的结果 My Query

 $userDetail = $user->with('eventUsers.events.records')->whereHas('eventUsers', function ($query){
                $query->where('is_active', 1);
            })->first();

这里它正在渲染来自 evenusers 的所有结果。我只想要活动的 eventUsers。

标签: laraveleloquent

解决方案


您可以使用如下雄辩的关系逻辑

在用户模型中获取用户事件的详细信息

    public function getEvent(){
        return $this->hasMany('App\Event');
    }

在事件模型中获取事件记录的详细信息

    public function getRecord(){
        return $this->hasMany('App\Record');
    }   

您的最终查询

$user_details = User::with('getEvent.getRecord')->get();

推荐阅读