如何修复 laravel 8 中的错误 "Trying to get property 'title' of non-object"
How can I fix this error "Trying to get property 'title' of non-object" in laravel 8
背景:
我安装了一个新的 Laravel 版本 8.49.2,并将我的应用程序逻辑(控制器、路由、视图、中间件、模型、自定义配置)从(遗留的 Laravel v5.8 项目)中移动,一切正常到目前为止和预期的一样好。
但是当我访问 blade 中的关系属性时,出现以下错误:Trying to get property 'title' of non-object (View: /Path/to/resources/views/users.blade.php)
Blade:
@foreach($users as $user)
<p> {{ $user->roles->title }} </p>
@endforeach
这个
<p> {{ $user['roles']['title'] }} </p>
or
<p> {{ $user->roles['title'] }} </p>
也报错Trying to access array offset on value of type null
控制者:
$users = User::with(['roles'])->get();
return view('users', compact('users'));
用户模型:
public function roles()
{
return $this->belongsTo(Role::class, 'levelId');
}
榜样:
public function users()
{
return $this->hasMany(User::class, 'levelId');
}
当我死掉并转储时 dd($user->roles->title)
我得到值 "Admin"
但是像这样 {{ $user->roles->title }}
就给出了错误。
注意:
当我将 PHP 版本更改为 7.3 时,不会出现错误。但在PHP 7.4.20 或 7.4.21 中会出现此错误。但我需要 PHP 7.4.*
有谁知道我该如何解决这个问题?
看起来有些用户没有角色。所以最好检查 null.When 你 dd($user->roles->title)
它只检查第一个用户记录而不是所有用户。
@foreach($users as $user)
<p> {{ $user->roles->title??null }} </p>
@endforeach
背景: 我安装了一个新的 Laravel 版本 8.49.2,并将我的应用程序逻辑(控制器、路由、视图、中间件、模型、自定义配置)从(遗留的 Laravel v5.8 项目)中移动,一切正常到目前为止和预期的一样好。
但是当我访问 blade 中的关系属性时,出现以下错误:Trying to get property 'title' of non-object (View: /Path/to/resources/views/users.blade.php)
Blade:
@foreach($users as $user)
<p> {{ $user->roles->title }} </p>
@endforeach
这个
<p> {{ $user['roles']['title'] }} </p>
or
<p> {{ $user->roles['title'] }} </p>
也报错Trying to access array offset on value of type null
控制者:
$users = User::with(['roles'])->get();
return view('users', compact('users'));
用户模型:
public function roles()
{
return $this->belongsTo(Role::class, 'levelId');
}
榜样:
public function users()
{
return $this->hasMany(User::class, 'levelId');
}
当我死掉并转储时 dd($user->roles->title)
我得到值 "Admin"
但是像这样 {{ $user->roles->title }}
就给出了错误。
注意: 当我将 PHP 版本更改为 7.3 时,不会出现错误。但在PHP 7.4.20 或 7.4.21 中会出现此错误。但我需要 PHP 7.4.* 有谁知道我该如何解决这个问题?
看起来有些用户没有角色。所以最好检查 null.When 你 dd($user->roles->title)
它只检查第一个用户记录而不是所有用户。
@foreach($users as $user)
<p> {{ $user->roles->title??null }} </p>
@endforeach