我正在开展一个项目,每个用户都可以在指定中分配。
我使用三种模式完成了我的工作:用户,指定&的 UsersDesignation
表结构是:
User:
id name email password
--- ----- ----- --------
1 User 1 u1@em.com kjasdkfjla
2 User 2 u2@em.com fksdjfghal
3 User 3 u3@em.com ghhaljaljl
Designation:
id name
--- -----
1 Faculty
2 Lecturer
3 Lab Instructor
UsersDesignation:
id userId designationId
--- ------ -------------
1 1 2
2 2 1
3 3 3
但是通过建立关系,我很难从designation
对象中获取user
用户。
到目前为止,我在我的模型中尝试过:
User(model):
public function userDesignation()
{
$this->hasOne('App\UsersDesignation', 'id', 'userId');
}
UserDesignation(model):
public function user()
{
$this->belongsToMany('App\User', 'userId', 'id');
}
public function designation()
{
$this->belongsTo('App\Designation', 'designationId', 'id');
}
实际上,我想用user profiles
来展示user
模型designation
。但上述方式无效。我不知道如何建立这种关系。
这是我的观点文件:
<div>
{{ $user->userDesignation->designationId }}
</div>
我每次都得到的错误
ErrorException(E_ERROR)App \ User :: userDesignation必须返回一个 关系实例。 (视图: .... \资源\视图\型材\ show.blade.php)
我非常需要这个帮助!
答案 0 :(得分:3)
如果用户只能有1个可能的名称,则不需要数据透视表(UsersDesignation表)。
只需在用户表中添加 designation_id ,然后使用belongsTo和hasMany关系。
用户强>
public function designation()
{
return $this->belongsTo('App\Designation');
}
<强>指定强>
public function users()
{
return $this->hasMany('App\User');
}
答案 1 :(得分:0)
您可能需要使用关系many to many。
示例:
表格结构:
users:
id
name
email
password
designations:
id
name
designation_user
id
designation_id
user_id
您的模特关系
应用\用户强>:
public function designations()
{
return $this->belongsToMany('App\Designation');
}
应用\指定强>:
public function users()
{
return $this->belongsToMany('App\User');
}
要获得用户的指定,您的通话应如下所示:
<div>
@foreach($user->designations()->get() as $designation)
{{ $designation->name }}
@endforeach
</div>