如果关系不存在,如何设置为空?

How to set null if relations doesn't exist?

在模型中我有:

public function publisher()
{
    return $this->belongsTo('App\User', 'user_id', 'id');
}

在模板中 blade 我尝试显示数据 User:

@foreach($announcement->offers as $key => $item)
    <img src="{{url($item->publisher->photo)}}">
@endforeach

问题是,如果 User table 中没有数据,程序会崩溃,因为我无法获取 属性 $item->publisher->photo.

如何解决?

你可以这样做:

@if (empty($item->publisher))
    It's empty
@else
    <img src="{{ url($item->publisher->photo) }}">
@endif

此处处理内存,但您可以使用@forelse/@empty。如果您迭代的对象为空,则可以使用这些指令:

@forelse($announcement->offers as $key => $item)
    <img src="{{url($item->publisher->photo)}}">
@empty
    //default image or message?
@endforelse

https://laravel.com/docs/5.4/blade#loops