如何用Laravel雄辩地查询三个表

时间:2019-08-12 14:20:59

标签: laravel-5 eloquent eloquent--relationship

我正在使用laravel构建事件网站,我的问题是我想查询数据库中的事件表以及组织者表和票证表,事件表将提供ID,我将使用该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');
}

它给了我这个错误

  

Illuminate \ Database \ QueryException(42000)

     

SQLSTATE [42000]:语法错误或访问冲突:1055'obj.events.name'不在GROUP BY中(SQL:select events。*来自events,在{ {1}}。organizers = eventsidorganizers上左加入events_idtickets = events。{{ 1}}按id分组。ticketsevents_id排序。events描述限制6)

如何纠正该错误?

1 个答案:

答案 0 :(得分:0)

如果您正确使用口才

只需修复您的进入控制器

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

有关更多信息,请访问以下链接:Laravel - Eloquent relationship