2014-12-05 39 views
1

我正在製作我的用戶的選擇列表,但我的用戶使用姓和名存儲在我的數據庫中。列表中的所有文檔僅使用te數據庫中的一個列項目。我如何在列表中得到這兩個名字?Laravel在選擇列表中獲取更多數據

控制器

public function make() { 
    $users = User::lists('lastname','id'); 
    return View::make('admin.awardAchievement')->with('users', $users); 
} 

查看

{{ Form::select('user', $users , Input::old('user')) }} 

這只是西港島線打印出我的用戶的名字,但我想在列表中顯示的名字和姓氏..是否有人可以幫助?

回答

3

您可以通過使用自定義數據庫表達式並連接lastname + id來完成此操作。這是因爲表單助手只喜歡1列的文本(選項文本)和1列的id(選項值屬性)。

$users = User::select(DB::raw('CONCAT(lastname, id) AS userselect, id'))->lists('userselect', 'id'); 

我覺得這是要走的路,但你必須記住,CONCAT可以表現不同在不同的DBMS或此功能可能根本不存在。如果你真的關心這個,我只需循環訪問你的用戶列表並手動連接標準的PHP腳本。

另一種選擇是調整表單助手以支持您的需求。儘管如果你想讓你的代碼能夠快速升級,我不會推薦你這樣做。

編輯:檢查的第一個評論

+0

檢查HTTP: //laravel.com/docs/4.2/eloquent#accessors-and-mutators用於爲模型定義自定義屬性。這將是最好的方法。 – 2014-12-05 14:13:46

+0

如何爲查詢添加Where子句? – JBS 2015-07-21 05:36:20

2

可以二傳手添加到模型,所以像:

public function getFullNameAttribute() 
{ 
    return $this->attributes['firstname'] . ' ' . $this->attributes['lastname']; 
} 

,然後你可以做

$users = User::lists('fullname','id');