2017-11-24 8 views
1

私はユーザーテーブルとプロファイルテーブルを持っています。私のプロフィール表で私はユーザーAvatarを入れました。だから、私はユーザーモデルには、この機能を行うことによって、それらのアバターを取得しよう:Laravelの別のテーブルからデータにアクセスしようとすると、プロパティを定義解除します

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'); 
    } 
} 

、私のブレードに私はこのような機能をaccesingている: "

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

が、それは私にエラーを与えます未定義のプロパティ "となります。ユーザーはアバターを持っておらず、default.jpgが得られると予想しているので、私のコードで何が間違っていますか?ありがとう。

答えて

2

私はあなたのプロフィールの関係からアバターを取得する2つの異なる方法と関係があると思います。

あなたのif文
$this->profile()->avatar

あなたのリターン
$this->profile->avatar

私は間違っている、しかし、私は2番目が正しいと思うなら、私を修正してください。

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

+0

私はこれを最初に行い、このエラーが発生します。非オブジェクトのプロパティを取得しようとしています – Ying

2

変更

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

、それが正常に動作するはずです。

+0

後者は正常ですが、なぜ最初の1つがうまくいかないのですか? – Chay22

+2

Laravelで関係を定義すると、関連するテーブルはクエリオブジェクトのプロパティになります。 多分ここに誰かがそれをよりよく説明することができます、私の英語のスキルは悪いです説明の種類 – Insax

+3

私は最初の行だけでクエリオブジェクトを返すと思います。 $ this-> profile() - > where(...) $ this-> profile() - > get() - と書くと、最初の行がうまくいくはずです。 >アバター。 –

関連する問題