我已經閱讀了大量文章,花了幾個小時瀏覽cakephp.org的文檔,甚至嘗試了各種實際的例子,我似乎無法得到這個對。我已經有3個表如下:CakePHP:在'find'條件下使用第二級深層模型關聯,返回重複結果
- 項目
- project_tags
- 標籤
當有人增加了一個新的項目,他們選擇自己的標籤,這是從預定義的列表中選擇標籤表。然後使用project_id和tag_id字段將它們輸入的標籤存儲在project_tags中。
模型關係如下:
- 項目的hasMany projectTag
- projectTag屬於關聯項目
- ProjectTag屬於關聯標籤
無論我有正確的關係,仍是微不足道的我,但我在這裏嘗試了許多可能性。
我想要做的是執行查找特定標記的所有項目。我已經通過執行以下操作做到了這一點:
$this->Project->contain(array('ProjectTag' => 'Tag', 'User' => array('id')));
$projects = $this->Project->find('all', array('conditions' => array('ProjectTag.tag_id' => '6')));
結果是一個SQL錯誤列ProjectTag.tag_id不存在。這告訴我,這個關聯有一個錯誤,但是在哪裏?
這是因爲我不能在使用可容忍的時候在我喜愛的條件下使用第二級深度關聯的hasMany模型?如果是這樣,我該如何解決這個問題?
我知道它很長,對不起。任何人都可以看到這種奇怪的情況?
我嘗試過的另一種方法是使用Project上的unbindModel(),刪除ProjectTag的所有綁定,然後使用bindModel()和ProjectTag.project_id = Project.id的條件添加hasOne,但是這導致了4條記錄同樣的項目返回,每個ProjectTag一個,這似乎不正確。
我正在使用可容納的行爲並在AppModel中設置了遞歸= -1。
任何幫助是極大的讚賞。 謝謝
當你說「微不足道」時,我認爲你的真正含義是「不平凡」。 – eaj 2013-01-25 22:39:16
@eaj - 非常正確;)已更新 – SimonDowdles 2013-02-07 08:41:21