我可以根据虚拟字段对cakePHP选择框进行排序吗?

时间:2012-08-31 15:35:17

标签: php sql cakephp cakephp-2.0

现在,我的Players课程中的虚拟字段正在创建我的选择框,以便在add.ctp模型的Statistics视图中使用。选择框当前正按ID排序。我宁愿按Player.last_name排序。

这是我的模特:

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>

1 个答案:

答案 0 :(得分:2)

是的,您可以按虚拟字段排序,但您的虚拟字段为'name'而不是'last_name'。试试$order = array('Player.name');