Laravel 使用 optgroup 的表单下拉列表
Laravel Form dropdown with optgroup
假设我有一个包含类别的集合,同时急切地加载每个类别的所有描述。所以这意味着,每个类别 hasMany
描述。我想在下拉列表中显示所有描述,而 optgroup label
是类别名称,属于描述。所以像这样:
{{ Form::select('description', ['' => 'Select'] + $descriptions) }}
结果将是这样的(第一个 google 命中):
我知道我需要简单地传递一个多维数组,但我不确定如何实现。任何指针都会有所帮助。我知道以下内容会给我一个 Categories
:
的数组
Category::orderBy('name', 'asc')->pluck('name', 'id')->all();
但是我不能简单地加载描述,因为下面将产生相同的 attay,没有任何描述:
Category::with('descriptions')->orderBy('name', 'asc')->pluck('name', 'id')->all();
加载类别:
$categories = Category::with('descriptions')->orderBy('name', 'asc')->get();
然后准备$descriptions
数组:
foreach ($categories as $category) {
$descriptions[$category->name] = $category->descriptions->pluck('name', 'id');
}
假设我有一个包含类别的集合,同时急切地加载每个类别的所有描述。所以这意味着,每个类别 hasMany
描述。我想在下拉列表中显示所有描述,而 optgroup label
是类别名称,属于描述。所以像这样:
{{ Form::select('description', ['' => 'Select'] + $descriptions) }}
结果将是这样的(第一个 google 命中):
我知道我需要简单地传递一个多维数组,但我不确定如何实现。任何指针都会有所帮助。我知道以下内容会给我一个 Categories
:
Category::orderBy('name', 'asc')->pluck('name', 'id')->all();
但是我不能简单地加载描述,因为下面将产生相同的 attay,没有任何描述:
Category::with('descriptions')->orderBy('name', 'asc')->pluck('name', 'id')->all();
加载类别:
$categories = Category::with('descriptions')->orderBy('name', 'asc')->get();
然后准备$descriptions
数组:
foreach ($categories as $category) {
$descriptions[$category->name] = $category->descriptions->pluck('name', 'id');
}