在cakephp查找查询中的同一个表上使用sql union

时间:2013-04-22 05:47:27

标签: php mysql sql cakephp cakephp-1.3

假设我有这样的查询:

(SELECT * FROM user WHERE id < 5 order by id DESC LIMIT 1)
UNION
(SELECT * FROM user WHERE id = 5)
UNION
(SELECT * FROM user WHERE id > 5  LIMIT 1)

如何将上述查询转换为CakePHP find('all')查询?

谢谢

1 个答案:

答案 0 :(得分:0)

使用Model :: find('neighbors')

将此重写为查找('all')会有问题,但find('neighbors')可能符合您的要求;

请参阅文档find('neighbors')

这应该为您提供所需的数据,但您可能需要稍微采用您的代码才能使其与返回数组的不同“布局”正常工作;

 $data = $this->User->find('neighbors', array('field' => 'id', 'value' => 5));

<强>更新

刚看到你在CakePHP 1.3上,上面发布的链接指向文档的2.x部分。虽然类似,但这是CakePHP 1.3的文档:

http://book.cakephp.org/1.3/en/The-Manual/Developing-with-CakePHP/Models.html#find-neighbors