Laravel Eloquent with リレーション先のリレーションを指定する方法

Laravel Eloquent with リレーション先のリレーションを指定する方法

Laravel Eloquentでリレーション先のテーブルをwithメソッドでA->B->Cとリレーション先のさらにリレーションを指定する方法を説明します。

リレーション名をドットと繋げる

withメソッドで指定するリレーション名を、ドットで繋ぐことで二層、三層とリレーションを辿っていくことができます。

$user = User::with('posts.comments')->get();
文字列の書き方で指定するため、予め知っていないと分かりません。
公式リファレンスに詳細な記載もないですが、Laravelでは他の機能でもドットで繋ぐことで階層をあらわすケースが多いので、覚えておきましょう。

サンプル

class User
{
    public function posts()
    {
        return $this->hasMany(Post::class);
    }
}

class Post
{
    public function comments()
    {
        return $this->hasMany(Comment::class);
    }
}

class Comment
{

}

プログラミングカテゴリの最新記事