ご要望に応じて、特定のユース ケースの簡単な例をまとめました。
テーブル:
Eloquent は、このようなシナリオで 3 つのデータベース テーブルを作成することを提案しています: users
、groups
およびgroup_user
。
Laravel のドキュメントには、次のように記載されています。
テーブルのgroup_user
名前は、関連するモデル名のアルファベット順に由来します。
group_user
テーブルには、グループおよびユーザー エントリの主キーを含む列が含まuser_id
れている必要があります。テーブルは、ピボット テーブルと呼ばれるものですgroup_id
。group_user
これは3NFに準拠しています (興味がある場合)。
モデル:
User
モデルには次のコードが含まれている必要があります。
<?php
class User extends Eloquent {
//...Other code…
public function groups()
{
return $this->belongsToMany('Group');
}
}
Group
モデルには次のコードが含まれている必要があります。
<?php
class Group extends Eloquent {
//...Other code…
public function users()
{
return $this->belongsToMany('User');
}
//...Other code…
}
質問にあるようなモデルは必要ありません。UserGroup
使用法:
特定のユーザーが属するすべてのグループを取得するには、次のようにします。
$user = User::find($user_id);
$user_groups = $user->groups();
同様に、特定のグループに属するすべてのユーザーを取得するには、次のようにします。
$group = Group::find($group_id);
$group_users = $group->users();
ユーザーをグループに追加/削除するには、次のようにします。
$user = User::find($user_id);
//Add a user
$user->groups()->attach($group_id);
//Detach a user
$user->groups()->detach($group_id);
他の:
ピボット テーブルについてはこちらの Laravel ドキュメントで、マイグレーションで (ピボット テーブルの) 外部キーを定義する方法については、こちらを参照してください。
それが役立つことを願っています!