我可以根据虚拟字段对cakePHP选择框进行排序吗?
现在,我的选择框是从my我可以根据虚拟字段对cakePHP选择框进行排序吗?,php,sql,cakephp,cakephp-2.0,Php,Sql,Cakephp,Cakephp 2.0,现在,我的选择框是从myPlayers类中的虚拟字段创建的,用于myStatistics模型的add.ctp视图。当前正在按id对选择框进行排序。我希望它按Player.last\u name排序 这是我的模型: class Player extends AppModel { public $name = 'Player'; public $virtualFields = array( 'name' => "TRIM(CONCAT(Player.last_name
Players
类中的虚拟字段创建的,用于myStatistics
模型的add.ctp
视图。当前正在按id对选择框进行排序。我希望它按Player.last\u 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');
这是当前输出(按播放器id排序):
史密斯,约旦
玛拉尔,贾巴里
鲁塞尔,迈克
约翰逊,卡尔文
丹尼尔·汤普森
丹尼斯,雅各布
这是所需的输出(按姓氏排序):
丹尼斯,雅各布
约翰逊,卡尔文
玛拉尔,贾巴里
鲁塞尔,迈克
史密斯,约旦
丹尼尔·汤普森
是的,您可以按虚拟字段订购,但您的虚拟字段是'name'
,而不是'last\u name'
。试试$order=array('Player.name')代码>是的,您可以按虚拟字段订购,但您的虚拟字段是'name'
,而不是'last\u name'
。试试$order=array('Player.name')代码>我会试一试,但在此期间,你想把它作为一个答案提交,这样如果它是正确的,我可以给你信用吗?我认为这是有效的!然而,我不得不在$order=array('Player.name')前面添加var
因为某种原因,它抛出了一个解析错误:语法错误,意外的T_变量,第17行的/var/www/app/Model/Player.php中需要T_函数。实际上,最好是在姓氏、姓氏
上排序,先排序姓氏,再排序姓氏。
<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>