2012-08-31 30 views
-1

現在我的選擇框正在從我的Players類中的虛擬場創建,用於我的Statistics模型的add.ctp視圖。選擇框當前正在按id排序。我寧願按Player.last_name排序。我可以根據虛擬字段對cakePHP選擇框進行排序嗎?

這裏是我的模型:

class Player extends AppModel { 

    public $name = 'Player'; 
    public $virtualFields = array(
    'name' => "TRIM(CONCAT(Player.last_name, ', ', Player.first_name))" 
    ); 
    public $displayField = 'name'; 

    var $hasMany = array(
     'Statistic' => array(
      'className'  => 'Statistic', 
      'foreignKey' => 'player_id', 
      'dependent'=> true 
     ) 
    ); 

} 

這是我用我的add.ctp觀點是什麼:

echo $this->Form->input('player_id'); 

這是電流輸出(由player_id訂購):

<select name="data[Statistic][player_id]" id="StatisticPlayerId"> 
    <option value="335">Smith, Jordan</option> 
    <option value="336">Marall, Jabari</option> 
    <option value="337">Rusell, Mike</option> 
    <option value="338">Johnson, Calvin</option> 
    <option value="339">Thompson, Daniel</option> 
    <option value="340">Dennis, Jacob</option> 
</select> 

這是所需的輸出(按姓氏排序):

<select name="data[Statistic][player_id]" id="StatisticPlayerId"> 
    <option value="340">Dennis, Jacob</option> 
    <option value="338">Johnson, Calvin</option> 
    <option value="336">Marall, Jabari</option> 
    <option value="337">Rusell, Mike</option> 
    <option value="335">Smith, Jordan</option> 
    <option value="339">Thompson, Daniel</option> 
</select> 
+0

是的,你可以按虛擬字段排序,但你的虛擬字段是「name」而不是「last_name」。嘗試'$ order = array('Player.name');' – Choma

+0

我會給你一個鏡頭,但在此期間,你想提交一個答案,如果它是正確的,我可以給你信貸它? – bigmike7801

+0

完成,我希望它有幫助! – Choma

回答

2

是的,您可以按虛擬字段排序,但您的虛擬字段爲'name'而不是'last_name'。嘗試$order = array('Player.name');

+0

我認爲這工作!然而,我不得不在'$ order = array('Player.name');'因爲某種原因拋出一個'Parse錯誤:語法錯誤,意外的T_VARIABLE,期待T_FUNCTION在/ var/www/app/Model/Player.php on line 17' – bigmike7801

+0

按last_name排序也可以。實際上,在'last_name,first_name'上排序來排序姓氏,然後名字排序會更好。 – tigrang

相關問題