Laravel 与 auth() 建立关系
Posted
技术标签:
【中文标题】Laravel 与 auth() 建立关系【英文标题】:Laravel getting realtionship with auth() 【发布时间】:2018-02-15 17:22:55 【问题描述】:我在User
有如下关系。
public function partner()
return $this->hasOne('App\Partner','partner_id');
我正在访问这种关系
auth()->user()->partner()->name
但它给了我一个例外,name
在partners
表中可用:
未定义属性:Illuminate\Database\Eloquent\Relations\HasOne::$name`
而来自auth()->user()->partner()
的用户对象也是空的。
我错过了什么?
【问题讨论】:
使用的是什么 Laravel 版本? 【参考方案1】:auth()->user()->partner()
返回关系绑定,而不是模型本身。
改用auth()->user()->partner->name
。
【讨论】:
以下错误:SQLSTATE[42S22]: Column not found: 1054 Unknown column 'partners.user_id' in 'where clause'
您能添加一张您的数据库表结构的图片/示意图吗?【参考方案2】:
首先,确保设置正确的关系:
User.php
public function partner()
return $this->hasOne('App\Partner');
Partner.php
public function user()
return $this->belongsTo('App\User');
访问用户的合作伙伴:
// Get the user's Partner instance:
$partner = auth()->user()->partner;
// Access the user's partner properties:
$partner_name = auth()->user()->partner->name;
另外,请检查您的 partners
表是否包含 user_id
列。
【讨论】:
【参考方案3】:我认为你做错了,你所要做的就是改变:
public function partner()
return $this->hasOne('App\Partner','partner_id');
到
public function partner()
return $this->belongsTo('App\Partner');
一个用户属于一个伙伴,因为伙伴是一个元表。
【讨论】:
完美,非常感谢以上是关于Laravel 与 auth() 建立关系的主要内容,如果未能解决你的问题,请参考以下文章
Laravel 5.4 Auth::User() 与关系不起作用