2017-11-03 3 views
-1

dbのアバターレコードが存在しない場合は、何かを表示したいと思います。私は空の()関数を使用していますが、動作していません。アバターがヌルであってもimgとalt = "avatar"を表示しています。誰も助けることができますか?ラーベールブレードで空が機能しない場合

@foreach ($users as $user) 
     <tr> 
      <td class="user-table-information"> 

       @if(!empty($user->user_data->where('user_id', $user->id)->avatar)) 
       <i class="fa fa-user"></i>  
       @else 

       @foreach($user->user_data as $data) 
       <img src="{{ asset('/storage/uploads/avatars/'. $data->avatar) }}" class="avatar" alt="avatar"> 
       @endforeach 
       @endif 
       </td> 
+1

を与えることができました。あなたが ' - > where( 'user_id'、$ user-> id)'が何か間違っていることを指示する必要があるという事実 – apokryfos

+1

'$ user-> user_data->( 'user_id'、$ user-> id)'おそらく ' - >アバター'の前に ' - > first()'を追加して、 'empty'を正しく動作させる必要があります。 –

+0

おそらく私は何かを逃しているかもしれませんが、 '! 'の代わりに' empty() 'を使うつもりはありませんか?空() '?のように、アバター*が空の場合はプレースホルダを表示しますか?あなたのロジックが後方にあるように見えます。 –

答えて

0

代わりにisEmpty()を使用できます。コレクション(それがあるように見える)のuser_dataです...ちょうどブレードに送信する前に、あなたが(クエリ賢明な)十分に行っていないように感じている

@if(!$someDBcollection->isEmpty()) 
echo "its not empty"; 
@endif 
0

これ、もしそうなら、あなたが持っているように見えます:以下の例を参照してください。すべてのユーザーのアバターを保持するユーザーのコレクション!

はImはあなたのコントローラで

をいくつかのことを推測しようとしますが、... ..あなたは自分が以前のクエリに制限行うために必要があると思う:

$ユーザー=ユーザー::(」としuser_data ') - > all();

またはより良いまだ、それはあなたが必要なだけのアバターのパスで、彼らはただの関係を使用して、別のモデルである必要があれば...

$users = User::with('avatar')->all(); 

class Avatar() 
{ 
    ... some stuff here 

    public function relativePath() 
    { 
     return "/storage/uploads/avatars/" . $this.filename; 
    } 

    public function user() 
    { 
     return $this->belongsTo('App\User') 
    } 

} 

パブリッククラスユーザー() { .. 。

:いくつかのもの

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

}

はその後単にそれを使用します私が言ったように

<img src="{{ $user->avatar->relativePath() }}"/> 

、が、少しの情報との抽象的な答えは上に行くために、うまくいけば私はあなたの `$ users`データを取得しているどのような種類の答え:)

関連する問題