繁体   English   中英

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

[英]Laravel, attach a pivot table value to Auth::user, what's missing/wrong?

我正在尝试使用Auth :: user()-> building来返回其附加到的建筑物ID。 现在,它返回Null。 我究竟做错了什么? 我应该在某处明确声明一些内容吗? 谢谢。

我的桌子:

用户 (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-> 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_id列。

首先,除非您有其他需要,否则不需要第三张表( building_user )。

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

  • 添加一个名为building_id的字段,用于存储用户所属的相应building_id。
  • building_idbuildings表上的参考id buildings关系。

当然,删除第三张表,如果完成上述步骤,则不需要它。

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

https://laravel.com/docs/5.5/eloquent-relationships#one-to-many-inverse

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM