不带模型名的Cakephp select查询

不带模型名的Cakephp select查询,cakephp,Cakephp,我不希望dbt\u用户充当“用户”,而是将其作为原始查询,因为用户。“0”作为年龄不是有效的选择。查询可能类似于: $this->User->find('list', array('fields' => array('id', '"0" as age')); this function generates the following query SELECT `User`.`id`, `User."0" as age` FROM `db`.`t_users` AS `Use

我不希望
db
t\u用户
充当“用户”,而是将其作为原始查询,因为
用户。“0”作为年龄
不是有效的选择。查询可能类似于:

$this->User->find('list', array('fields' => array('id', '"0" as age'));

this function generates the following query

SELECT `User`.`id`, `User."0" as age` FROM `db`.`t_users` AS `User` WHERE 1 = 1
如果不使用自定义查询,如何在没有
User
的情况下生成查询


我使用的是cakephp 2.3.4

而不是使用
“0”作为年龄”
使用虚拟字段。这应该行。

您可以将年龄定义为用户模型上的虚拟字段:-

SELECT `id`, `"0" as age` FROM `db`.`t_users` WHERE 1 = 1
那么您的查询将是:-

class User extends AppModel {

    public $virtualFields = array(
        'age' => '0'
    );

}

看起来此代码正在尝试选择名为0的列名,是否正确?这就是它不起作用的原因。CakePHP将结果化名为User,以便您可以在其约定范围内使用它。因此$test=$this->User->find()允许您以$test['User']['column']的身份访问结果。因此,除非有原因不想为此给它加别名,否则需要调查为什么要使用名为0的列。如果您确实有一个名为0的列,请更改它,或者将它用'so'
0
as age'包装,因为age'可能会起作用,我在问题中没有弄清楚。0不是任何列的名称,我想选择初始年龄值为0的用户,该表也没有任何列名
age
。它在原始查询中运行良好,但在cakeUse中面临问题
$this->User->find('list', array('fields' => array('id', 'age')));