2014-11-05 55 views
1

我試過尋找一種方法來做到這一點與Laravel,我敢肯定它比能力更強(也許我一直在尋找它使用不正確的條款)..Laravel雄辯提取數據到自定義數組

我想提取表中的數據在Laravels使用內置的表單作者:

$clusters = Cluster::get(array('id','name')); 

分爲:

{{ Form::select('cluster', $clusters,Input::old('cluster'), array('id' => 'cluster')) }} 

,但目前,我得到JSON下拉在裏面,如果我使用toArray()它不使用從JSON陣列,它適用於新的ID號的ID號,然後放入數組中的數據:

Badly formed array using toArray from JSON object

任何人都可以點我在正確的方向上形成正確的陣列從雄辯拔牙? 我一直在使用這段代碼這感覺毫無意義:

$clust = array(); 
foreach($clusters as $key => $cl) { 
    $clust[$cl['id']] = $cl['location']; 
} 

感謝

+0

發佈返回數據(示例)。併發布所需的格式。 – itachi 2014-11-05 17:20:00

回答

6

使用lists(),這將返回列值的數組,併爲他們的可選標識符。

// Controller 
$clusters = Cluster::lists('name', 'id'); 

// View 
{{ Form::select('cluster', $clusters) }} 

lists()Query Builder method。所有查詢生成器方法都可用於Eloquent模型。


供參考:當使用表單助手,它會自動填充舊的輸入,如果它存在,所以你不需要指定它。另外,助手會根據元素的名稱自動生成一個ID,這樣也可以排除。

+0

謝謝,我知道有一個簡單的方法。 爲舊輸入&ID上的額外指針歡呼。我喜歡Laravel所有的小演員/助手! 編輯:我一定沒有看到它,因爲我縮小了對Eloquent文檔的看法 - 感謝以及指出查詢生成器方法都可用 – 2014-11-06 12:01:57

0

這是使用一個控制器來獲取數據,並創建視圖,然後使用視圖作出的組合表格。

在你的控制器:

$clusters = Cluster::select('id', 'name')->get(); // Or however you pull it 
// Transfer that data to a view, example views/clusters.blade.php 
return View::make('clusters')->with(array('clusters' => $clusters)); 

然後在你看來,使用$clusters生成你需要的任何形式的選項。例如,可以按如下方式製作下拉列表:

// Using HTML tags 
<select class="form-control" name="cluster"> 
@foreach($clusters AS $cluster) 
<option value="{{ $cluster->id }}" {{ (Input::old('cluster') == $cluster->name) ? "selected":"" }}> {{ $cluster->name }} </option> 
@endforeach 
</select> 

// Using Laravel Form Builder 
{{ Form::select('cluster', $clusters) }} // Not sure how you'd handle Input::old 

希望能夠對您的問題有所瞭解!

編輯 - 不會拼寫「集羣」顯然笑

+0

完全看你來自哪裏,但我相信Laravel肯定有一些東西可以克服這個問題,我確定我已經看到它在某處通過使用 - > get(array('id','name')) )等,但當我這樣做,它成爲一個數組內的數組.. – 2014-11-05 17:40:56