尝试从Laravel中的另一个表访问数据时取消定义属性

时间:2017-11-24 10:33:24

标签: laravel laravel-5 eloquent

我有用户表和个人资料表。在我的个人资料表中,我将用户阿凡达。所以我试着通过将这个功能变成我的用户模型来获得这些阿凡达:

public function profile(){
    return $this->hasOne('App\Profile');
}

public function getAvatar()
{
    if ($this->profile()->avatar){
        return Storage::url($this->profile->avatar);
    }else{
        return Storage::url('public/avatars/default.jpg');
    }
}

在我的刀片中,我正在访问这样的功能:

        <img src="{{ Auth::user()->getAvatar() }}" class="user-image" alt="User Image">

但是它给了我一个错误&#34;未定义的属性&#34;。用户没有阿凡达,我希望它会得到default.jpg,那么我的代码有什么问题?感谢。

2 个答案:

答案 0 :(得分:2)

我认为这与你从个人资料关系中获得头像的两种不同方式有关。

你的if语句
$this->profile()->avatar

你的回报
$this->profile->avatar

如果我错了,请纠正我,但我认为第二个是正确的。

答案 1 :(得分:2)

更改

if ($this->profile()->avatar){

if ($this->profile->avatar){

它应该可以正常工作。