Laravel通过auth()获得真实性

时间:2017-09-07 05:24:51

标签: laravel eloquent laravel-5.4 relation

我在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()的用户对象也是空的。

我缺少什么?

3 个答案:

答案 0 :(得分:1)

auth()->user()->partner()返回关系绑定,而不是模型本身。

尝试auth()->user()->partner->name

答案 1 :(得分:1)

首先,确保您建立正确的关系:

<强> 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列。

答案 2 :(得分:0)

我认为你做错了,所有你需要做的就是改变:

public function partner()
{
    return $this->hasOne('App\Partner','partner_id');
}

public function partner()
{
    return $this->belongsTo('App\Partner');
}

用户属于合作伙伴,原因合作伙伴是元表。