2010-04-02 51 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

相關問題