在cakePHP的find()中,如何包含常量?

时间:2011-08-10 16:00:52

标签: cakephp cakephp-1.3

我正在构建一个类似的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数组,然后将其转换为我想要的数据结构吗?我认为这会更快。

1 个答案:

答案 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()´轻松完成此操作。