我有一个Company
模型,我希望在其中定义与User
模型的两种关系:
public function users(){
return $this->hasMany('App\User');
}
public function administrator(){
return $this->hasOne('App\User', 'superuserid');
}
我在数据库的superuserid
表中有一个companies
字段,它是id
表的users
的外键。
我只想知道这是不是一个好策略,甚至可能?
答案 0 :(得分:2)
是的,这是一个很好的策略而且是可能的。
在您的模型中,您可以定义与模型需求一样多的关系。这些关系可以是不同的类型(hasOne,hasMany,belongsTo等)。
在您的情况下,由于公司有多个用户并且属于超级用户,因此我们有两种不同的关系,因此,显然,我们需要在模型中创建两种方法来表示这两种关系。
另一个例子:你和你父亲之间的关系。让我们说有一个用户模型的实现:
class User extends Model
{
public function children()
{
return $this->hasMany(User::class, 'id_parent');
}
public function dad()
{
return $this->belongsTo(User::class, 'id_parent')->where('gender', 'male');
}
}
这里的用户可以有很多孩子但只属于一个爸爸。