laravel - 获取所有相关记录 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。
解决方案
您可以使用如下雄辩的关系逻辑
在用户模型中获取用户事件的详细信息
public function getEvent(){
return $this->hasMany('App\Event');
}
在事件模型中获取事件记录的详细信息
public function getRecord(){
return $this->hasMany('App\Record');
}
您的最终查询
$user_details = User::with('getEvent.getRecord')->get();
推荐阅读
- javascript - 初学者:我将博客集成到我的 Javascript/React 网站中,但是如何添加样式?
- c++ - 在 C++ 中分别定义和初始化 List
- c# - 如何使用servicelocator wpf动态创建模型的多个实例
- amazon-web-services - 尝试导出发电机数据库表并写入 csv 文件时出现 UnicodeEncodeError
- c++ - 是否可以将文件从主机操作系统复制到在 virtualbox 中运行的来宾操作系统?(不是文件夹共享)
- python-3.x - 在 Docker 容器中运行应用程序单元测试
- java - 如何在 Java 代码中创建 jdbc 请求的 Jmeter 测试
- c# - 反向执行算法的简写
- c++ - C++ DLL(可从 VBA 调用并接收 Range 数据)
- sql-server - MS SQL 作业在具有 Windows 身份验证的链接服务器上运行存储过程