如何使用Laravel Eloquent获取每个结果的最后一个(每个日期)连接行

时间:2018-02-23 08:36:02

标签: php laravel laravel-5 eloquent

这是我想要实现的目标:

我有一个具有FormationSession模型的编队模型。 我需要所有编队,每个编队都有数据库中的最后一个会话。

这是我到目前为止所得到的:

$formations = Formation::query()
    ->with('location')
    ->with('jobs')
    ->with('employee')
    ->with('intervenant.company')
    ->with(['formation_sessions' => function($query) {
        $query->limit(1)->orderBy('start_at', 'desc');
    }])
    ->whereNotNull('update_frequency')
    ->get();

我很困惑,我怎么能实现这个目标?

1 个答案:

答案 0 :(得分:1)

您可以创建类似

的其他关系
public function formation_sessions_last(){
    return $this->belongsToMany('App\FormationSession','formation_id')
                ->orderBy('start_at')->limit(1);
}
#App\FormationSession  => FormationSession Modal
#formation_id          => foreign_key

然后你可以调用查询

->with('formation_sessions_last')

希望这会有所帮助。