在我的体育应用程序中,我希望有一个页面,其中团队成员按照其“活动”状态列在每个团队下面。
涉及的三个模型是团队,用户和团体。 “组”就像每个用户的状态字段。例如,在团队内部,一些玩家处于“活跃”组中,而一些玩家处于非活动状态。
用户可以属于许多团队和许多组(因此两者的关系都是多对多)。组属于团队(多对一)。这三种模型建立了这些关系。
到目前为止,我有一个简单的控制器,可以查找成员的团队并为视图提取这些团队:
class HomeController extends Controller
{
public function showHome()
{
if (Auth::check())
{
$user = Auth::user();
$teams = $user->teams;
return View::make('indexUser', compact('teams'));
}
else
{
return View::make('index');
}
}
}
在我的indexUser视图中,作为一个简单的测试,我可以执行以下操作来列出用户并在非活动用户旁边添加“*”:
@foreach ($teams as $team)
@foreach ($team->groups as $group)
@foreach ($group->users as $user)
{{$user->first_name}},
@if($group->name == 'Inactive')
(inactive)
@endif
,
@endforeach
@endforeach
@endforeach
上面的代码输出了这个,它在正确的轨道上:
Steven,Wellington,Kirsten,Stacy,Brent,Delbert,Nelle, Johnpaul,Nora,Nathanael,Effie,Elva,Ophelia,Carlotta, Dameon,Arnoldo,Emelia,Natalia,Monte(不活跃),Chris (不活跃),
但是,这会向页面添加6个查询,并且不会让我控制排序。例如,在活动用户之前或之后是否列出非活动成员是绝对可能的。我的预感是,大部分查询应该在控制器中完成,但这就是我击中心理障碍的地方。
关于如何以最有效的方式解决这个问题的任何提示?