Laravelのリレーション 多対多 中間テーブルについてです。
急にプログラミング関連のブログなんて!って思うかもしれませんがここにまとめたらモチベになるかもなので書いていきます。
やりたいこと
3つ表があります。
ここから社員名と配属されている部門の名前を取り出したいです。
社員によっては複数の部門に配属しています。
1.全社員の一覧
(ユーザ名とユーザーID)


2会社の部門のIDと部門名の一覧


3.全社員のID(1のユーザーIDと同じ)と部門ID(2の部門IDと同じ)の一覧


現状
全然わからない
Laravelのリレーション使ったら簡単にできるよってらしいけどどこに何が必要なのか…
tb_user
user_id
name
…
departments
deparment_id
deparment_name
…
department_user
id
department_id
user_id
…
とりあえずやったけどダメだったこと
3の表のモデルにbelongsToManyで
1のユーザ名を紐付け
public function user() {return $this -> belongsToMany('App\Http\Models\User', 'user_name');}
2の部門名を紐付け
public function depart() { return $this -> belongsToMany('App\Http\Models\Depart', 'department_name');}
これが正解
department_userモデルに追記するリレーション
ユーザーモデルとのリレーション
department_userのuser_idとusersのuser_idでリレーションするよ〜ってこと!
hasManyでした!
public function users() { return $this->hasMany(Users::class, 'user_id', 'user_id'); }
部門モデルとのリレーション
department_userのdepartment_idとusersのdepartment_idでリレーションのするよ〜ってこと!
public function depart() { return $this->hasMany(Depart::class, 'department_id', 'department_id'); }
呼び出す時のメソッドの記述
withのなかにさっきの2つのリレーションを書いてあげればOK
public function scopedptuser() { return $this->with('users') ->with('depart') ->get(); }
最後に
プログラミングは(やれば)誰でもできる!
やればできるこYDK!!!
コメント