【发布时间】:2021-09-21 14:05:39
【问题描述】:
背景: 我安装了一个新的 Laravel 版本 8.49.2,并将我的应用程序逻辑(控制器、路由、视图、中间件、模型、自定义配置)从(一个旧的 Laravel v5.8 项目)中移出,到目前为止一切正常。
但是当我访问刀片中的关系属性时,我收到以下错误:Trying to get property 'title' of non-object (View: /Path/to/resources/views/users.blade.php)
刀片:
@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.* 有谁知道我该如何解决这个问题?
【问题讨论】:
-
你有很多关系,所以你会得到一个角色对象数组,所以你需要创建foreach循环
-
我更新了代码以显示作为数组访问时发生的错误。
<p> {{ $user['roles']['title'] }} </p> or <p> {{ $user->roles['title'] }} </p>也给出了错误Trying to access array offset on value of type null -
一个用户没有角色......你有一个循环,所以它可能是该集合中的任何一个,你只是用
dd转储第一个用户,使用dump如果你不想杀死脚本
标签: php laravel laravel-5 eloquent laravel-8