我在我的laravel應用程序中有兩個關聯模型表:subsectors
和sectors
。這是一個例子。Laravel從連接表創建嵌套選擇框
界別分組:
|id | name |sector_id|
|---|---------------|---------|
| 1 | Global Equity | 1 |
| 2 | US Equity | 1 |
| 3 | UK Equity | 1 |
| 4 | Govt Bonds | 2 |
| 5 | IG Bonds | 2 |
| 6 | HY Bonds | 2 |
| 7 | Gold | 3 |
部門:
| id | name |
|----|-------------|
| 1 | Equity |
| 2 | Bonds |
| 3 | Commodities |
所以每個界別分組映射到一個部門。這反映在我的模型類中。
我想創建一個子區域的選擇框,其中的選項組的扇區名稱作爲選項組名稱,子區段作爲其中的選項。對於Laravel的形式建設者相信使用的語法如下:
{{ Form::select('subsector', array(
'Equity' => [1 => 'Global Equity', 2 => 'US Equity', 3 => 'UK Equity'],
'Bonds' => [4 => 'Govt Bonds', 5 => 'IG Bonds', 6 => 'HY Bonds'],
//etc...
))}}
我的問題是寫洋洋灑灑或流利查詢生成嵌套陣列上面要傳遞給formbuilder。我想我可以通過遍歷一個Eloquent查詢結果對象來實現,但我想知道是否有更好的方法來獲得2個連接表的簡單嵌套結果。
我所有的關係都是在模型中定義的。
編輯
這種方法可行,但我希望有一個更清潔的方式,而不嵌套for
循環。
$subsectors = [];
$sectors = Sector::with('subsector')->get();
foreach ($sectors as $sector)
{
$subsectors[$sector->name] = [];
foreach ($sector->subsector as $subsector)
{
$subsectors[$sector->name][$subsector->id] = $subsector->name;
}
}
爲什麼這是個好主意?它會導致更多的靜態代碼,並且不支持模型表單填充,並且不會消除嵌套for循環的需要。 – harryg 2014-09-24 10:49:08