如何在 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 左连接 organizersevents.@ 987654327@ = organizers.events_id left join tickets on events.id = tickets.events_id group by events.id order by id.@sc限制 6)

我该如何纠正这个错误?

【问题讨论】:

【参考方案1】:

如果你正确使用了 eloquent

只需修复你的控制器

$events = Events::orderBy('id', 'desc')
    ->with(['organizers','events'])
    ->paginate(env('EventPag'));

欲了解更多信息,请点击此链接:Laravel - Eloquent relationship。

【讨论】:

我想要的是,对于每个活动,它都会加载每张票和组织者,但是有了这个你的解决方案,它只会加载一张票和组织者

以上是关于如何在 laravel eloquent 中查询三张表的主要内容,如果未能解决你的问题,请参考以下文章