如何使用laravel5将foreach循环内的模型数据传递给视图

时间:2017-07-30 18:02:20

标签: laravel-5 laravel-views

我有一个foreach循环,每次匹配某个值,然后获取相关记录

 foreach($results as $result){
    // Value may be 1,2,3 etc
    if($result->id == $value){
       $users = User::whereId($value)->get();
    }
  }
  return view('index',compact('users'));

现在如何将所有用户记录传递给视图? 目前它只获取第一条记录!

3 个答案:

答案 0 :(得分:1)

您可以将所有ID存储在数组中,然后一次获取所有记录。在循环中运行数据库查询具有性能开销

$userIds = [];

foreach ($results as $result) {
    // Value may be 1, 2, 3 etc.
    if ($result->id == $value){
        $userIds[] = $value;
    }
}

$users = User::whereIn('id', $userIds)->get();

return view('index', compact('users'));

答案 1 :(得分:0)

所以你想要做的是:

  • 创建一个包含用户数组的新数组
  • 然后返回新数组

示例:

$matchedUsers = array();

foreach($results as $result) {
    // Value may be 1,2,3 etc
    if($result->id == $value) {
       $matchedUsers[] = User::whereId($value)->get();
    }
}
return view('index', compact('matchedUsers'));

更简洁的方法是使用一个独立的功能,在匹配时调用用户信息:

public function getUsers($results)
{
    $matchedUsers = array();

    foreach($results as $result){
        // Value may be 1,2,3 etc
        if($result->id == $value) {
            $matchedUsers[] = User::whereId($value)->get();
        }
    }
    return view('index', compact('matchedUsers'));
}

public function getMatchedUser($userId)
{
    return User::whereId($userId)->get();
}

答案 2 :(得分:0)

你可以使用" whereIn"为了这个目的。

您可以从Laravel doc

获取更多信息
$ids = [];

foreach ($results as $result) {

    if ($result->id == $value){
        $ids[] = $value;
    }
}

$users = User::whereIn('id', $ids)->get();

return view('index', compact('users'));