CakePHP - 查找请求检索0而不是1的行

时间:2013-09-27 12:00:48

标签: cakephp

我正在将CakePHP 1.3应用程序迁移到2.4.1,虽然这个过程很痛苦,但我现在已经达到了极其奇怪的程度。

当在查看表中检索所有活动的行时(ENUM列名为activo,其中'0','1'),1表示活动而0表示未处于活动状态时,Cake正在检索的行是不活跃,0。

$testimonials = $this->Testimonial->find('all', array('conditions' => array('Testimonial.activo' => '1')));

Rows:

ID name activo
1  James  1
2  Holly  0
3  David  1

正在检索霍莉,而不是撤回大卫和詹姆斯。如果让它们全部处于非活动状态(0),它会全部获取它们,但是如果我将它们全部激活(1),它将根本不检索它们。这就好像它决定0是我正在寻找的而不是1,当我给出的条件是1时。

有关可能发生的事情的任何线索?

编辑:包括生成的SQL

SELECT `Testimonial`.`id`, `Testimonial`.`spa`, `Testimonial`.`eng`, `Testimonial`.`fre`, `Testimonial`.`ita`, `Testimonial`.`por`, `Testimonial`.`nombre`, `Testimonial`.`activo`, `Testimonial`.`created` FROM `database_dev`.`testimonials` AS `Testimonial` WHERE `Testimonial`.`activo` = 1

顺便说一下,到目前为止我发现的所有发现都发生了这种情况,在其他表中,有一个带有ENUM的激活字段,我要求的值为1或更高。

尝试了几次迭代,比如数组('1'),'...> ='=> '1','...'=>等等。

3 个答案:

答案 0 :(得分:1)

如果activo列是ENUM,那么您应该使用字符串作为查询中使用的值。

array('Testimonial.activo' => '1'))

而不是

array('Testimonial.activo' => 1))

答案 1 :(得分:0)

将数据库中的列类型从ENUM更改为INT可解决此问题。

但这需要我在许多表中更改它们并更改值,因为INT会将当前值从0更改为1和1更改为2,这是不理想的。任何有关如何修复ENUM的建议都将受到高度赞赏并改为正确答案。

答案 2 :(得分:0)

使用它 数组('Testimonial.activo =“1”')