2012-05-11 42 views
3

所以我下面的示例表(工会):查询类似数据的多个模型CakePHP的

Table A: 
id 
name 
type 
hat_size 
created 

Table B: 
id 
name 
type 
favorite_food 
created 

Table C: 
id 
name 
type 
some_other_thing 
created 

比方说,我想创建与模型AB结果的搜索,并C使用id,name,typecreated

我的目标是搜索所有三个表格,按照其中一个字段排序(让我们使用created作为ORDER_BY字段),并将其限制为20个结果。

通常我会简单地做一个这些的联盟,按字段排序,并且LIMIT结果。

现在,我知道我可以创建一个原始查询来执行此操作......但这意味着我必须重新编写分页方法,始终进行清理等。另外,它非常笨拙,并且不一定可以跨多个SQL数据库移植。如果可能的话,我更愿意使用MVC友好的方式来使用模型本身。

我可以用CakePHP处理这个问题的最佳方式是什么?

谢谢 詹姆斯

+0

CakePHP不能很好地处理UNION。但它是可能的 - http://stackoverflow.com/questions/3536107/union-syntax-in-cakephp – 472084

回答

1

一种选择是创建一个VIEW其持有UNION查询。然后在视图上执行你的Cake查询。

但是,由于难以在服务器之间传输它们(以及通常包含在出口中的烦人的DEFINER命令),我开始避免意见。

+0

除非我误解,这是否也打破了MVC结构?我真的很喜欢坚持MVC,或者使用MVC开始时很愚蠢。我想知道是否没有一种方法可以正确地完成MVC,而不会强制查询并破坏一些蛋糕魔法。 – xtraorange

+0

那么你在数据库中创建了视图,然后使用视图作为你的模型。我不认为这打破了MVC,但它是微不足道的... –