0
例如,我有兩個MANY_MANY關係的相關模型。 需要查找所有名稱包含'test'或其中關係model2.name包含'test'的模型。yii通過使用有相關模型找到模型
在sql上我寫了這個查詢,這是我想從ActiveRecord中得到的結果,通過使用標準關係機制和CDbCriteria。
SELECT m1.* FROM model1 m1 LEFT JOIN model_model mm ON mm.from_id = m1.id LEFT JOIN model2 m2 ON mm.to_id = m2.id GROUP BY m1.id HAVING ( m1.name LIKE '%test%' OR GROUP_CONCAT(m2.name) LIKE '%test%' );
簡單的使用Activerecord.findBySql不是很好的解決方案,因爲我有很多模型,比如上面。因此,爲了更快地組合任何模型,優選關係。
當我使用CDbCriteria.with Yii生成2查詢。 當我將CDbCriteria.with與CDbCriteria.To一起使用時,Yii試圖從相關表中選擇所有列,這是冗餘的,將來可能會很慢,因爲關係數量可能會比這個例子中的數量多得多。
有什麼想法嗎?
謝謝。
結果我們有邏輯AND(M1.name LIKE'test'和M2.name LIKE'test'),但我需要OR – axon
感謝與範圍的想法,我forg關於這個功能。現在似乎我找到了解決辦法,但需要時間進行檢查 – axon