我将尝试构建一个类似于Facebook群组的应用程序,其中包含由成员填充的群组,每个成员都有一种会员类型(例如,管理员、官员、用户等),每个群组都有其自己的群组类型(公共、封闭、秘密)。
因此,我创建了几个表:
因此,我创建了几个表:
users - (id, name ..)
groups - (id, name, group_type_id ..)
group_types - (id, type)
group_members - (user_id, group_id, membership_type_id)
group_membership_types - (id, type)
我相信这是正确的数据库结构(如果我错了,请纠正我)。
现在我需要将其转换为Eloquent模型,所以我创建了模型,但在尝试建立它们之间的关系时感到非常困惑,我阅读了有关“pivot”和“hasManyThrough”的文章,但更加困惑了。
这些是我目前创建的模型:
class Group extends BaseModel
{
protected $table = 'groups';
public function Members() {
return $this->belongsToMany('App\GroupMemeber');
}
public function Type() {
return $this->belongsTo('App\GroupType');
}
}
--
class GroupType extends BaseModel
{
protected $table = 'group_types';
protected $guarded = ['id', 'type'];
}
--
class GroupMemebershipType extends BaseModel
{
protected $table = 'group_membership_types';
}
--
class GroupMember extends BaseModel
{
protected $table = 'group_members';
public function User() {
return $this->belongsTo('App\User');
}
public function Group() {
return $this->hasMany('App\Group');
}
public function MembershipType() {
return $this->belongsTo('App\GroupMemebershipType');
}
}
我做得对吗?你会如何创建这些模型?