在这里,我试图获取所有与team-> project_id匹配的project-> id,并且关系正常工作,但是我使用的变量$ users显示未定义。可能是什么问题呢??
这是控制器代码
public function index()
{
if (Auth::user()->role->id == 1) {
$projects = Project::all();
$teams = Team::all();
foreach ($teams as $team) {
$users = User::whereIn('id', $team->members)->get();
}
return view('project.index', compact('projects', 'users'));
}
}
答案 0 :(得分:1)
您不是在没有超出条件的情况下初始化用户,因此,如果没有团队,就不会有用户:
尝试以下方法:
$users = collect();
foreach ($teams as $team) {
$users = User::whereIn('id', $team->members)->get();
}
return view('project.index', compact('projects', 'users'));
但是请记住,您的循环每次都会覆盖用户,因此您只会从最后一个团队中获取用户:D
答案 1 :(得分:0)
您的问题就在您的循环中。
您的代码中有些模糊的部分。
1)在每个循环中,您都会覆盖b
变量:我将假设您需要一个数组,因此请尝试以下操作:
if a[0] < b[0]:
return a[0] + orderedConcat(a[1:], b)
else:
return b[0] + orderedConcat(a, b[1:])
*小注释,请确保$users
表中的列 $users[] = User::whereIn('id', $team->members)->get();
实际包含ID。
2)members
的用法是正确的,但是如果Team
为空,则您将尝试从中获取未定义的属性。此外,如果最后一个信号为空,则会覆盖变量,然后compact()
为空,因此您只需在FrontEnd中返回一个空数组即可。
3)使用$user
意味着您的列有1个以上的$user
。通常这是一个坏习惯。您应该使用数据透视表或将每条记录存储在不同的行中。
4)预定义数组。如果没有团队,将永远不会访问whereIn
循环,从而使您遇到未定义Ids
的php错误。