我有两个模型,用户和社区。一个用户可以属于多个社区,而一个社区可以有多个用户。我已经在两个模型中实现了多对多关系,然后创建了一个数据透视表communities_users。在Community Model中,我定义了用户(成员)关系:
public function users(){
return $this->belongsToMany('App\User', 'communities_users', 'community_id', 'user_id');
}
在用户模型中,我将社区关系定义为:
public function communities(){
return $this->belongsToMany('App\Community', 'communities_users', 'user_id', 'community_id');
}
我可以称这些关系为好。没问题。但是,我需要在communities表中添加一个admin_id,表示创建社区的用户(指向相同的User模型)。我知道这将是Community模型中的belongsTo关系和User中的hasMany关系。我在社区表中添加了一个admin_id列。在我的社区模型中,我添加了我的管理员模型;
public function admin(){
return $this->belongsTo('App\User', 'admin_id');
}
如果我尝试返回这个,应用程序不断打破与500内部服务器错误。我怎样才能纠正这个错误并使它返回创建社区的用户对象呢?
2条答案
按热度按时间vs91vp4v1#
belongsTo方法的第二个参数为foreign_key!
在社区模型中:
在用户模型中:
e4yzc0pl2#
我想让我们一起从头开始完成这个数据库
你的数据库,因为我理解它如下(当然它的一部分)
!!但如果我不明白,改变关系就能解决问题
步骤1:在用户迁移中,使用ForeignId定义community_id
步骤2:在模型中使用has Many和belongs_To
模型用户
模范社区
您可以为管理员模型执行相同的操作
!!如果我没有理解正确,你可以更改上面的连接,但一般工作与上面相同