我有一个错误,我不明白为什么得到它。 我在很多线程中搜索了此错误,但没有找到与我相对应的修复程序。
外观\点火\异常\ ViewException 试图获取非对象的属性“用户”
在模板刀片中的{{ $contact->messages->last()->user->name }}
行上(请参见下面的提示)。
class Contact extends Model
{
protected $fillable = [
'user_id', 'title', 'status',
];
public function messages()
{
return $this->hasMany('App\Models\ContactMessages', 'contact_id', 'id');
}
}
class ContactMessages extends Model
{
protected $fillable = [
'contact_id', 'user_id', 'message', 'read',
];
public function user()
{
return $this->hasOne('App\Models\User', 'id', 'user_id');
}
}
class ContactController extends Controller
{
public function index()
{
return view('contact.index')
->with('contact_list', Contact::where('user_id', Auth::user()->id)->latest()->paginate(10));
}
}
// In my template view:
@foreach($contact_list as $contact)
<tr>
<td>{{ $contact->id }}</td>
{{ dd($contact->messages->last()->user->name) }} // This display me the good result!
<td>{{ $contact->messages->last()->user->name }}</td> // This display me the Laravel error
<td>{{ $contact->created_at->diffForHumans() }}</td>
<td>{{ $contact->updated_at->diffForHumans() }}</td>
</tr>
@endforeach
谢谢。
答案 0 :(得分:0)
最常见的原因是此链中的某些内容为空。您可以使用if
语句来防止错误。这是一种方法:
@if($contact->messages->last())
@if($contact->messages->last()->user)
{{ $contact->messages->last()->user->name }}
@endif
@endif