2010-04-02 29 views
1

我希望我不会需要诉诸自定义查询。CakePHP:如何根据2级深度关联模型对结果进行排序?

一个相关的问题是:我该如何找回数据,因此,如果相关的模型是空的,没有记录在所有检索到的,而不是一个空数组用于相关联的模式?

作为一个过于简单的例子,说我有以下型号: 市 - >街 - >家

我怎么排序结果市通过门牌号码?

如何检索至少有一个家在这城市restuls?我不希望有一个城市名称和细节的记录和一个空房子阵列,因为它混淆了分页结果。

CakePHP在单独的查询中检索属于街道的房屋记录,因此将诸如'House.number DESC'之类的东西放入搜索查询的'订单'字段将返回'字段不存在'错误。

任何想法?

+0

您能否提供一个简短的用例来更好地解释您希望网页的工作方式? – 2010-04-02 21:21:59

回答

2

关于第一个问题,我想你可以通过指定的模型关联的顺序排序的结果。

例如,从街道型号:

var $hasMany = array('House'=>array('order'=>'address desc')) 

这将是很难找到与它至少一个房子城市没有自定义查询,所以你可能会更好走这样一条路,而不是支出这么多时间试图让它在蛋糕上工作。

+0

谢谢。我通过使用内连接来避免自定义查询,该内连接在蛋糕继续提取相关模型之前过滤掉了不需要的结果。 – KcYxA 2010-04-05 00:05:34

+0

Booom谢谢。以为我将不得不在查询执行后手动对相关结果进行排序。欢呼 – Bear 2013-04-25 14:20:56

3

在你的控制器进行实际的查询操作前,在模型中的顺序条款。

$this->City->Street->hasMany['House']['order'] => "houseNo DESC"; 
+0

什么是街道也有'秩序'的条件?哪一个优先,可以控制? – KcYxA 2010-04-05 00:07:07

+0

您可以连接条件。未测试: $这 - >模型 - >的hasMany [ 'OtherModel'] [ '顺序'] => “字段DESC”。 $这 - >模型 - >的hasMany [ 'OtherModel'] [ '顺序']; – matiasf 2010-04-05 10:21:52

相关问题