尽管在同一个地方工作,但仍试图在Laravel中获得非对象的财产



关于我的问题有很多问题,但我从来没有遇到过这种情况,所以我的代码在这里:

<td>{{ $note->title}}</td>
<td>{{ AppUser::where('id', $note->user)->first()->name }}</td>
<td>{{ date("d.m.Y H:i:s", strtotime($note->created_at)) }}</td>
<td>{{ date("d.m.Y H:i:s", strtotime($note->updated_at)) }}</td>

到目前为止一切正常,除了

<td>{{ AppUser::where('id', $note->user)->first()->name }}</td>

我发现问题$note->user,它抛出了

(2/2) 错误异常 尝试获取非对象的属性

这对我来说没有任何意义,因为上面$note->title并且$note->created_at像魅力一样工作。有什么想法吗?

您应该始终检查用户是否存在:

$user = AppUser::where('id', $note->user)->first();

然后在视图中:

{{ is_null($user) ? 'No user with specified ID' : $user->name }}

此外,在视图中使用 Eloquent 是一个糟糕的主意。

在询问用户名称之前,您需要检查用户是否存在。

您还可以利用雄辩关系,这将从您的视图中删除用户检索。

将用户关系添加到Note模型

public function user()
{
return $this->belongsTo(AppUser::class, 'user');
}

然后在您的视图中,您可以调用$note->user如果找到,它将返回一个AppUser实例,否则null.

所以打印用户名

<td>{{ $note->user ? $note->user->name : '' }}</td>

最新更新