我正在构建一个类似的SQL查询:
"SELECT email.member_id, 1 FROM email ... "
我正在使用
$this->Email->find('list', array(
'fields' => array('Email.member_id', '1'), ...
CakePHP正在生成:
SELECT `Email`.`member_id`, `Email`.`1` FROM `emails` AS `Email` ...
如何指定1是常量而不是数据库字段?
为什么我要这样做
我基本上想要返回一个关联数组,其关键字为member_id,值为1.最好只获取一个连续的member_id数组,然后将其转换为我想要的数据结构吗?我认为这会更快。
答案 0 :(得分:4)
蛋糕不容易这样。在你的具体情况下,我会想知道为什么你想要一个恒定的字段。但总的来说你应该使用Virtual Fields:
http://book.cakephp.org/view/1608/Virtual-fields
基本上,您可以通过添加以下内容来修改模型电子邮件:
var $virtualFields = array(
'one' => '1'
);
现在你可以像这样查询:
$this->Email->find('list', array(
'fields' => array('Email.member_id', 'Email.one'), ...
对于您添加的用例,您应该只获得一系列直接的ID并在之后填充它。不仅会更快,而且更少hacky =>更容易理解。您可以使用´array_fill_keys()´轻松完成此操作。