我正在尝试 Auth :: user() - >构建以返回它所附加的建筑物ID。现在它正在返回Null。我究竟做错了什么?我应该在某处明确声明某事吗?谢谢。
我的桌子:
用户(ID,名称等)
建筑物(ID,名称)
building_user (building_id,user_id)具有值(7 = building_id,1 = user_id),其中两个组合了主键。
应用\用户
...
public function building(){
return $this->belongsTo('App\Building');
}
...
和
应用\建筑
...
public function users()
{
return $this->hasMany('App\User');
}
...
**编辑**
我尝试在视图上执行$ building->用户,并收到错误
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'users.building_id' in 'where clause' (SQL: select * from `users` where `users`.`building_id` = 7 and `users`.`building_id` is not null)
似乎它试图不进行关系搜索。并在用户表中搜索building_id列。
答案 0 :(得分:1)
首先,除非你有其他想法,否则你不需要第三张桌子(building_user
)。
您需要在users
表中进行一些修改。
building_id
的字段,用于存储用户所属的相应building_id。building_id
牌桌上建立从id
到参考buildings
的关系。当然要删除第三张表,如果您已完成上述步骤,则不需要它。
然后Auth::user()->building()->id
会为您提供登录用户的构建ID。
https://laravel.com/docs/5.5/eloquent-relationships#one-to-many-inverse