2015-12-10 36 views
0

我有一個表格由select2.js是如何把價值觀 - laravel

在我的控制器服務我產生與選擇內容的變種:

$gau = array(null => 'Gautor...') + Gauthor::orderBy('surname','asc')->lists('surname', 'id')->all(); 

在我看來,我這樣做:

{!! Form::select('gauthor_id', $gau, Session::get('aut'), array('id'=>'gauthor_id')) !!} 

在我的表我有兩列:surnamefirstnames

在我Gauthor模式,我把它們合併這樣的:

public function getFullnameAttribute() 
{ 
    return $this->firstnames . ' ' . $this->surname; 
} 

爲了在我的視圖文件這樣$o->fullname顯示該值。

我想做的事: 我想在我的選擇框中看到全名。如何做到這一點,而不用在數據庫中創建全名的另一列?

我曾嘗試: 我試圖與控制器fullname更換surname,但它是太容易了。我得到了SQL錯誤:列「全名」找不到

謝謝

回答

1

試試這個代碼,沒有測試它

Gauthor::selectRaw('id, CONCAT(firstnames, " ", surname) as fullname') 
->orderBy('fullname','asc')->lists('fullname', 'id'); 

selectRaw('id, CONCAT(firstnames, " ", surname) as fullname')將選擇idfullname(由姓Concat的&姓氏)。然後你可以通過->lists('fullname', 'id')列出這兩個。

+0

將在1小時內測試並給您反饋。謝謝 – Peter

+0

:) yeas oky,並且對於最佳實踐,您可以在控制器或存儲庫內執行此查詢(如果您使用存儲庫模式)。 :) –

+0

不幸的是它不工作。我得到空選擇。我嘗試過使用和不使用' - > all()'標記 – Peter

0

額外->get()做到了神奇。全行應該是這樣的:

$gau = array(null => 'Gautor...') + Gauthor::orderBy('surname','asc')->get()->lists('fullname', 'id')->all(); 

如果要包括模型的id,那麼你需要包括select2調用中的以下選項:

$(document).ready(function() { 
     $("select").select2({ 
      templateResult: function(state) { 
       if (!state.id) { return state.text; } 
       return state.id + ' - ' + state.text; 
      } 
     }); 

    }); 

的這個:

$("select").select2();