多対多とは
ある人は、いくつかのグループに所属しています。
あるグループは、いくつかの人で構成されてます。
これが多対多です。お互いが複数の対象を持ってますね。
これをデータベースで表現すると、中間テーブルと言うものが必要です。
データベースだとこんな感じ。
menbers id|name 1 | ういろう 2 | りんご 3 | マジシャン
groups id|name 1 | 野球部 2 | 麻雀部 3 | ダーツ部
member_group id|member_id|group_id 1 | 2| 1 2 | 2| 3 3 | 3| 3 4 | 3| 2
野球部(group_1)は、りんご(member_2)が所属している。
マジシャン(member_3)は、麻雀部(group_2)とダーツ部(group_3)に所属している。
こんな感じの意味になります。
Laravelでリレーションを組むには?
参考 Eloquent:リレーション 5.1 Laravel
結論
belongsToManyを使う。
class Member extends Model { /** * memberが属するグループを取得 */ public function groups() { return $this->belongsToMany('App\Group'); } }
この時、中間テーブルの名前がmember_groupとは異なる名前の時は、
class Member extends Model { /** * memberが属するグループを取得 */ public function groups() { return $this->belongsToMany('App\Group', 'other_table'); } }
日記
ゆっくりと記事書けるのいいね。
他にもネタがあるのでゆっくり消化しよう。
そういや、ザ・シークレットが面白いと聞いたので見てみた。最初は宗教かな?通販かな?って感じだったけど、 5分したらなるほどそういう話ね。ってなった。