Php Laravel,将数据透视表值附加到Auth::user,what';什么不见了/错了?

Php Laravel,将数据透视表值附加到Auth::user,what';什么不见了/错了?,php,laravel,Php,Laravel,我正在尝试让Auth::user()->building返回它所附加到的建筑ID。现在它返回空值。我做错了什么?我应该在某处明确声明什么吗?多谢各位 我的桌子: 用户(id、名称等) 建筑物(id、名称) building_user(building_id,user_id)具有值(7=building_id,1=user_id),主键位于两者的组合上 应用程序\用户 及 应用程序\建筑 ... public function users() { return $this-&

我正在尝试让Auth::user()->building返回它所附加到的建筑ID。现在它返回空值。我做错了什么?我应该在某处明确声明什么吗?多谢各位

我的桌子:

用户(id、名称等)

建筑物(id、名称)

building_user(building_id,user_id)具有值(7=building_id,1=user_id),主键位于两者的组合上


应用程序\用户

应用程序\建筑

  ...
  public function users()
  {
    return $this->hasMany('App\User');
  }
  ... 
**编辑**

我尝试在视图上执行$building->users,但收到了错误

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\u id列。

首先,您不需要第三个表(
building\u user
),除非您另有想法

您需要在
users
表中进行一些修改

  • 添加名为
    building\u id
    的字段,用于存储用户所属的相应building\u id
  • 建筑物id
    建筑物
    表上的
    id
    参考建立关系
当然,删除第三个表,如果已经完成了上述步骤,则不需要它

然后
Auth::user()->building()->id
为您提供登录用户的建筑id


您在用户和建筑中都将值设置为$fillable了吗?@NaveenNiraula我只为User.php设置了它-受保护的$fillable=['name','email','password'];
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)