2017-11-03 6 views
-1

내 db에 아바타 레코드가 존재하지 않으면 무언가를 표시하고 싶습니다. empty() 함수를 사용하고 있지만 작동하지 않습니다. 아바타가 null 인 경우에도 img 및 alt = "avatar"가 표시됩니다. 누구든지 도와 줄 수 있습니까?Laravel blade에서 empty가 작동하지 않으면

@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

을 줄 수 있었다. 사실 ('user_id', $ user-> id)'무엇인가 잘못되었다는 것을 나타내는'-> '을 할 필요가 있다는 사실은 – apokryfos

+1

'$ user-> user_data-> ('user_id ', $ user-> id)'You ''empty'가 제대로 작동하려면'-> first()'를'-> avatar' 전에 추가해야 할 것입니다. –

+0

어쩌면 나는 뭔가를 놓치고 있지만'! '대신'empty()'를 사용하지 않으려 고하지는 않을 것입니다. empty()'? 에서와 마찬가지로 아바타 *가 비어 있으면 자리 표시자를 표시 하시겠습니까? 논리가 거꾸로 된 것 같습니다. –

답변

0

대신 isEmpty()를 사용해 볼 수 있습니다. 아래의 예를 참조하십시오

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

그냥 모음 _ 데이터입니다 (그것이 모양) ... 블레이드에 전송하기 전에 당신이 (현명한 쿼리) 충분하지 않은 느낌, 그리고이 당신이 가지고있는 것처럼 그렇게 보이는 경우 모든 사용자의 아바타를 보유한 사용자 컬렉션입니다. '(와

$ 사용자 = 사용자 : : :

은 ... 컨트롤러에서

을 당신이 당신 임 몇 가지를 추정하는 것 ... 이전 쿼리를 제한 할 필요가 있다고 생각하지만, 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` 데이터를 얻고있는 방법 종류의 대답 :