我有一个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'));
现在如何将所有用户记录传递给视图? 目前它只获取第一条记录!
答案 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'));