我有用户和场所。 在表user_venue中,我存储了多个连接(manyToMany)
$rUsers = \DB::table('user_venue')->where('venue_id',$user->id)->get();
$resUsers = collect();
foreach ($rUsers as $key => $i) {
$id = $i->user_id;
$u = User::findOrFail($id);
$resUsers->push($u);
}
如您所见,我想将user
模型存储到集合$resUser
中,但是它向我返回错误页面,并且不加载视图...
为什么?
答案 0 :(得分:2)
当您$u->push($resUsers)
时,您尝试插入单个User
记录/实例。我相信您想改为执行以下操作:
$resUsers->push($u);
这会将单个User
记录推入$resUsers
集合中。
答案 1 :(得分:1)
如果您有多对多关系,并且想加载与给定User
链接的Venue
,那么为什么不使用关系呢? 效率更高,因为您仅一次访问数据库,而不是实际策略。
# Venue.php
public function users()
{
return $this->belongsToMany(User::class);
}
然后在您的控制器中:
# VenueController.php
public function myFunction(Request $request)
{
$venue = Venue::find('your-venue-id'); // getting a venue
$users = $venue->users; // <-----
return view('users')->with('users', $users);
}
在上面的代码中,$users
变量是Collection的实例,据我所知,该变量包含User
个模型的集合,这些集合与查询匹配输出。