Laravel5.5 多対多 hasManyThroughを使用したテーブル経由の多対多のリレーション

情報 Laravel5.5 メモ クエリビルダ Eloquent DB リレーション モデル

メモです。
だいたいこんな書き方。
なお動作未確認。

Countryモデル
Userモデル
Postモデル
 
 
Countryモデル

public function post()
{
    return $this->hasManyThrough(
        'App\Models\Post',
        'App\Models\User',
        'id',
        'user_id',
        'user_id',
        'id'
    );
}

 
 
コントローラー

public function getList()
{
    $result = $this->object
        ->with('post',
            'post.user',
            'post.user.country'
        )
        ->whereHas('post', function($q) {
            $q->orderBy("posts.created_at");//postsはテーブル名を直指定
        })
        ->get();

    return $result;
}

ハズメニースルーで全部取得からの紐づく親をたどっていくという操作になる想定


追記:
正しい使い方じゃないかもしれない気が薄々している。

Laravelおにいさん / 2018-05-28 / 326 / 0
このエントリーをはてなブックマークに追加
関連記事

まだコメントがついていません。

ログイン不要でコメントの投稿ができます。