【问题标题】:How to query three tables in laravel eloquent如何在 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)

我该如何纠正这个错误?

【问题讨论】:

    标签: laravel-5 eloquent eloquent-relationship


    【解决方案1】:

    如果你正确使用了 eloquent

    只需修复你的控制器

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

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

    【讨论】:

    • 我想要的是,对于每个活动,它都会加载每张票和组织者,但是有了这个你的解决方案,它只会加载一张票和组织者
    猜你喜欢
    • 2017-09-11
    • 1970-01-01
    • 1970-01-01
    • 2019-12-20
    • 1970-01-01
    • 2018-09-21
    • 2016-04-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多