エンジニアのひよこ_level10

毎日更新してた人。たまに記事書きます。

【Laravel】多対多のリレーションで、中間テーブルの値を取得【111日目】

f:id:willow710kut:20171223184135j:plain

多対多のリレーションって?

willow710kut.hatenablog.com

自分の過去記事ですが・・・

こんな時どうする?

menbers
id|name
1 | ういろう
2 | りんご
3 | マジシャン
groups
id|name
1 | 野球部
2 | 麻雀部
3 | ダーツ部
member_group
id|member_id|group_id|other_data
1 | 2| 1|a
2 | 2| 3|b
3 | 3| 3|c
4 | 3| 2|d

other_dataを取得するには?

中間テーブルにother_dataってデータがありますね。

これを取得するにはどうするかというお話。

結論

withPivotを使う

class Member extends Model
{
    /**
     * memberが属するグループを取得
     */
    public function groups()
    {
        return $this->belongsToMany('App\Group')
            ->withPivot('other_data');
    }
}

取得方法

foreach ($members->groups as $group) {
    echo $group->pivot->other_data;
}

とか

$groups[0]->pivot->other_data;

こんな感じに取っていただければ。

日記

111日!きれいな数値!

ってことでかなり長続きしてますね。

定期的にブログを書いているエンジニアの方はまだ2人しか知らない・・・
でもだからこそ引き合わせたいなぁって思いました。

ブログ系エンジニアの集いとか。

・・・ブログ系エンジニアとは #とは

会社にもブログ一年続けると宣言したので、引き続き頑張っていきますー!
いつか時間ができたら、技術記事と日記を分離しようそうしよう。

ブログ書き始めた時は、まさか80記事もプログラム系の記事を書くと思わなかったんや・・・