我有一个users
表和一个photos
表。 photos表已通过imageable_id和imageable_type链接到用户表(和其他一些表)。一切工作正常。
现在,我想将一个数组返回到一个包含以下内容的视图:用户名,用户电子邮件,用户desc和用户图像路径(来自photos表)。
我所做的是创建了一个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'));
仍然出现相同的错误:<< / p>
@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
答案 0 :(得分:1)
您可以通过定义用户与照片之间的关系来处理它,在用户模型上定义与照片模型之间的关系
public function photo()
{
return $this->hasOne('App\Photo','imageable_id');
}
然后在您的控制器上
$user_admins = User::where('role_id', $admin_id)->orderBy('name', 'asc')->get();
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="{!!$admin->photo->path!!}" 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
答案 1 :(得分:1)
因此,错误消息显示为Trying to get property of non-object
。这意味着,您正在尝试访问变量的属性,该变量不是对象,而是其他对象。您收到此错误的原因是,您传递的$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