Laravel,将一个数据透视表值附加到Auth :: user,缺少什么/错误?

时间:2017-09-17 03:44:45

标签: php laravel

我正在尝试 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列。

1 个答案:

答案 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