【问题标题】:Laravel 4.2 Creating a grouped list dropdown from the databaseLaravel 4.2 从数据库中创建分组列表下拉列表
【发布时间】:2015-12-15 17:43:34
【问题描述】:

我可以使用以下方法创建选择元素:

$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 Drop Down List Documentation 所示。

提前感谢您的帮助。

【问题讨论】:

  • 你需要子数组。您的 Team 变量包含 Marketing 和 Sales 等元素。每个元素都包含您的姓名和身份证。

标签: php mysql laravel laravel-4


【解决方案1】:

所以这就是我最终要做的。

$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 或 Query Builder 有更雄辩的方式来做到这一点,但我不知道如何。

还是继续下一个问题吧!

【讨论】:

    猜你喜欢
    • 2015-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-03
    • 1970-01-01
    • 2018-01-18
    • 1970-01-01
    • 2010-10-28
    相关资源
    最近更新 更多