如何在 laravel eloquent 中查询三张表
Posted
技术标签:
【中文标题】如何在 laravel eloquent 中查询三张表【英文标题】:How to query three tables in laravel eloquent 【发布时间】:2019-12-19 03:19:40 【问题描述】:我正在用 laravel 建立一个活动网站,我的问题是我想查询数据库中的活动表以及组织者表和票证表,活动表将提供我将用来查询其余部分的 id与门票和组织者中的 events_id 链接的表格(门票和组织者)
下面是代码
$events = Events::orderBy('id', 'desc')
->leftJoin('organizers', 'events.id', '=', 'organizers.events_id')
->leftJoin('tickets', 'events.id', '=', 'tickets.events_id')
->paginate(env('EventPag'));
这是事件模型的代码
public function organizers()
return $this->hasMany('App\Organizers');
public function tickets()
return $this->hasMany('App\Tickets');
这是组织者模型的代码
public function events()
return $this->belongsTo('App\Events');
它给了我这个错误
照亮\数据库\查询异常(42000)
SQLSTATE[42000]:语法错误或访问冲突:1055 'obj.events.name' 不在 GROUP BY 中(SQL:选择事件。* 从
events
左连接organizers
在events
.@ 987654327@ =organizers
.events_id
left jointickets
onevents
.id
=tickets
.events_id
group byevents
.id
order byid
.@sc限制 6)
我该如何纠正这个错误?
【问题讨论】:
【参考方案1】:如果你正确使用了 eloquent
只需修复你的控制器
$events = Events::orderBy('id', 'desc')
->with(['organizers','events'])
->paginate(env('EventPag'));
欲了解更多信息,请点击此链接:Laravel - Eloquent relationship。
【讨论】:
我想要的是,对于每个活动,它都会加载每张票和组织者,但是有了这个你的解决方案,它只会加载一张票和组织者以上是关于如何在 laravel eloquent 中查询三张表的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Laravel 5.8 中使用 Eloquent 进行查询?
如何在 laravel eloquent 中组合这些多个查询
我将如何在 Laravel Eloquent 中编写这个 MySQL 查询?