【发布时间】:2020-02-18 22:55:25
【问题描述】:
我有一个users 表和一个photos 表。 photos 表已通过 imageable_id 和 imageable_type 链接到 users 表(和其他一些表)。一切都很好。
现在我想将一个数组返回到一个视图,其中包含:用户名、用户的电子邮件、用户的 desc 和用户的图像路径(来自照片表)。
我所做的是创建了一个array,其中包含来自每个用户数据的数组集合,然后将array 传递给视图:
$user_admins = array();
$admin_id = 1;
$admins = User::where('role_id', $admin_id)->orderBy('name', 'asc')->get();
foreach($admins as $admin)
{
$photo = Photo::where('imageable_id', $admin->id)->where('imageable_type', 'App\User')->first();
$admin_data = array('name'=>$admin->name, 'email'=>$admin->email, 'desc'=>$admin->desc, 'path'=>$photo->path);
array_push($user_admins, $admin_data);
}
// return $user_admins;
//Return View
return view('pages/home_admin', compact('user_admins'));
但是在查看页面上,我得到了一个Trying to get property of non-object,它指出了我的:
<h5 class="card-title">{!!$admin->name!!}</h5>
如何在我的视图中访问这些用户的数据?
非常感谢!
更新
我也试过了:
foreach($admins as $admin)
{
$admin_data['name'] = $admin['name'];
$admin_data['email'] = $admin['email'];
$admin_data['desc'] = $admin['desc'];
$photo = Photo::where('imageable_id', $admin->id)->where('imageable_type', 'App\User')->first();
$admin_data['path'] = $photo['path'];
// $admin_data = array('name'=>$admin->name, 'email'=>$admin->email, 'desc'=>$admin->desc, 'path'=>$photo->path);
array_push($user_admins, $admin_data);
}
// return $user_admins;
//Return View
return view('pages/home_admin', compact('user_admins'));
还是出现同样的错误:
查看代码:
@foreach ($user_admins as $admin)
<div class="card text-center shadow-sm ml-3" style="width: 18rem;">
<div class="card-body">
<img src="../user_images/img_defaultprofile.png" class="mb-3" style="height: 10vh;" alt="" srcset="">
<h5 class="card-title">{!!$admin->name!!}</h5>
<h6 class="card-subtitle mb-2 text-muted">{!!$admin->email!!}<h6>
<p class="card-text">{!!$admin->desc!!}</p>
<a href="#" class="btn btn-info">View Profile</a>
</div>
</div>
@endforeach
【问题讨论】:
-
$admin可能是数组,不是对象,所以需要使用数组访问方式,而不是对象访问方式。$admin['name'] -
@aynber 我更新了我的问题。我试过了,但仍然出现同样的错误。
-
显示更多视图,特别是您定义
$admin的位置 -
你能显示从用户到照片的关系声明吗?我觉得您可以使用 User 模型上的关系和访问器更轻松地处理这个问题
-
我知道这听起来很奇怪。使用其他东西代替
$admin。我最近遇到了同样的问题,为什么我尝试将 '$order' 传递给我的刀片视图并得到了确切的错误。在我将$order更改为$other names instead of order后,事情就解决了。不知道是不是同样的情况,我仍然试图找出原因。但我想我们很可能不在同一种情况下。
标签: php laravel laravel-blade