如果空在laravel刀片不起作用

时间:2017-11-03 14:08:12

标签: php laravel blade

如果我的数据库中的头像记录不存在,我想显示一些内容。我正在使用empty()函数,但它不起作用。即使头像为空,它也会显示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>

2 个答案:

答案 0 :(得分:0)

您可以尝试使用isEmpty()代替。见下面的例子:

SELECT JSON_ARRAY(
JSON_OBJECT (
         KEY 'number' VALUE s.number,
         KEY 'name' VALUE s.sname,
         KEY 'location' VALUE s.loc
          )
       ) AS student_det
FROM   student s;

答案 1 :(得分:0)

这只是感觉你在发送到刀片之前做得不够(查询明智)...是user_data一个集合(看起来是这样),如果是这样的话,你看起来像是一个拥有所有的用户的集合用户头像!

认为你只需要对先前的查询进行限制..我会假设一些事情,但是......

在您的控制器中:

$ users = User :: with(&#39; user_data&#39;) - &gt; 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() }}"/>

就像我说的那样,它是一个抽象的答案,但是很少有信息可以继续,希望我能够给出各种答案:)