【问题标题】:How to add an user element to users collection如何将用户元素添加到用户集合
【发布时间】:2019-09-21 01:05:16
【问题描述】:

我有用户和场地。 在表 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 中,但它返回错误页面并且不加载视图... 为什么?

【问题讨论】:

  • 你能发布完整的代码和错误吗?

标签: php laravel collections foreach push


【解决方案1】:

当您是 $u->push($resUsers) 时,您正试图推入单个 User 记录/实例。我相信您希望执行以下操作:

$resUsers->push($u);

这会将单个 User 记录推送到 $resUsers 集合中。

【讨论】:

  • 好的,谢谢。就在那时我收到了一个错误 - 不要显示我的视图。
【解决方案2】:

如果您有一个多对多关系并且想要加载与给定Venue 链接的Users,为什么不使用关系?这更有效,因为您只访问数据库一次,而不是您的实际策略。

# 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 模型的集合,据我所知,这是您想要的输出。

【讨论】:

    猜你喜欢
    • 2017-01-03
    • 2017-04-11
    • 1970-01-01
    • 1970-01-01
    • 2015-08-05
    • 1970-01-01
    • 1970-01-01
    • 2021-12-30
    • 2010-09-15
    相关资源
    最近更新 更多