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

时间:2015-09-18 14:19:20

标签: php mysql laravel laravel-4

我可以使用:

创建一个select元素
$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>

显然这需要在departments表和team table之间进行连接,但我不知道如何构建laravel对分组列表所需的嵌套数组,如Laravel Drop Down List Documentation所示。< / p>

提前感谢您的帮助。

1 个答案:

答案 0 :(得分: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或查询生成器有一种更有说服力的方法,但我无法弄清楚如何。

无论如何都要解决下一个问题!