如何在 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 中查询三张表的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Laravel 5.8 中使用 Eloquent 进行查询?

如何在 laravel eloquent 中查询多个关系

如何在 laravel eloquent 中组合这些多个查询

我将如何在 Laravel Eloquent 中编写这个 MySQL 查询?

如何在 Laravel 中使用多表查询而不使用 Eloquent 关系

如何在 Eloquent/Laravel 上查询子查询