Laravel 如何进行多表查询(三张表以上),有什么好的方案么?

比如我有A/B/C三张表 三张表都有一个userid的字段作为关联
有什么方法比较科学合理的方法
两张表的 我用过join和Eloquent关联
三种表的我用了join可行 ,关联不成功
请教下 有没其他的办法来多表查询

嘉宝君
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 7
dreamsun

模型关联 blongsTo hasOne hasMany .......... https://learnku.com/docs/laravel/5.5/eloqu...

6年前 评论
嘉宝君

@dreamsun
模型关联 我试过两个关联可行 三张表以上没成
leftjoin使用后有一个报错删除时有个报错SQLSTATE[23000]: Integrity constraint violation: 1052 Column 'updated_at' in field list is ambiguous
语句大致如下:
DB::leftjoin(A 和 B)->leftjoin(A和C)->where()->delete

6年前 评论

@Torankusu
关联删除不指定删除的是那个表是不可以的
所以,我建议先关联出来数据取出ID的数组,再使用单表查询删除。

6年前 评论
嘉宝君

@sethhu
谢谢
看到了相关信息
意思 先用leftjoin获取所有消息后再单表查询删除么
如果是用关联 好像没办法一次查询三张表
关联好像只能两张表?还是我理解或用的方法有误?

6年前 评论

@Torankusu
用过Mysql都知道是可以三张表的
所以平常应该是这样写
$query = DB::table('firstTable')->leftJoin('secondTable', 'firstTable.id', 'secondTable.fristTable_id')->leftJoin('ThirdTable', 'secondTable.id', 'ThirdTable.secondTable_id')->where('xxx')->select('要删除表的ID')->get();
DB::table('要删除的表')->whereIn('id', $query)->delete();
类似这样写,但left join必然存在null值,准确应该使用join

6年前 评论
嘉宝君

@sethhu
恩恩 明白了
如果是做的东西需求来说是要用left join
谢谢

6年前 评论
GDDD

DB和ORM都能写

5年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!