Laravel 4.2:从数据库创建分组列表下拉菜单

3

我可以使用以下代码创建一个下拉选择框:

$team = DB::table('team')->orderBy('name', 'asc')->lists('name', 'id');
return View::make('team')->with('team', $team);

然后在我的表单中:

{{Form::select('team', $team) }}

这会产生像这样的输出:
<select id='team'>
    <option value="1">Jane Doe</option>
    <option value="2">Dan Kennedy</option>
    <option value="3">Zack Glickman</option>
</select>

这很棒。

然而,我想按照部门和团队成员来组织下拉菜单,以便获得以下输出:

<select id='team'>
    <optgroup label="Marketing">
        <option value="1">Jane Doe</option>
        <option value="3">Zack Glickman</option>
    </optgroup>
    <optgroup label="Sales">
        <option value="2">Dan Kennedy</option>
    </optgroup>
</select>

显然,这需要在部门表和团队表之间进行连接,但我不确定如何让查询构建Laravel所需的分组列表的嵌套数组,如 Laravel下拉列表文档中所示。

非常感谢您的帮助。


你需要子数组。你的团队变量包含像市场营销和销售这样的元素。每个元素都包含姓名和ID的人员。 - cre8
1个回答

0

所以这就是我最终做的事情。

$departments = DB::table('departments')->get();
$data = array();

foreach($departments as $department) {
    $team = DB::table('team')->where('department_id', '=', $department->id)->orderBy('order', 'asc')->get();
    $tdata = array();

    foreach($team as $t) {
        $tdata[$t->id] = $t->name;
    }

    $data[$department->department] = $tdata;

}

return View::make('team')->with('team', $data); 

这个方法可以工作,但我希望能够使用Laravel的ORM或查询构建器以更优雅的方式完成,但我无法弄清楚如何做到。

无论如何,接下来是下一个问题!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接