Right now my select box is being created from a virtualfield in my Players class to be used in an add.ctp view for my Statistics model. The select box is currently being sorted by the id. I would rather it sort by the Player.last_name.
Here is my Model:
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
)
);
}
this is what I’m using in my add.ctp view:
echo $this->Form->input('player_id');
This is the current output (ordered by the 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>
This is the desired output (ordered by the last name):
<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>
Yes, you can order by virtual fields, but your virtual fields is
'name'and not'last_name'. Try$order = array('Player.name');