2012-09-10 80 views
0

我的標題看起來像天真,但我不得不說,我讀/搜索/測試一切可能,但是我find()方法不執行JOIN到SQL查詢中的相關表。我用它在其他項目好幾次都沒有問題,但在這裏......CakePHP的 - HABTM find()方法不使連接到其它表

這裏我2款(沒什麼特別的,但相關的模型手工定義):

class Pflanzen extends AppModel { 
    public $useTable = 'pflanzen'; 
    public $hasAndBelongsToMany = array(
         'Herbar' => array(
             'order'=>'Herbar.order ASC', 
             'joinTable' => 'herbar_pflanzen', 
             'foreignKey' => 'pflanzen_id', 
             'associationForeignKey' => 'herbar_id') 
      ); 
} 
class Herbar extends AppModel { 
    public $useTable = 'herbar'; 
    public $hasAndBelongsToMany = array(
       'Pflanzen' => array('joinTable' => 'herbar_pflanzen', 
            'foreignKey' => 'herbar_id', 
            'associationForeignKey' => 'pflanzen_id') 
      ) 
} 

這裏我查詢的「Herbar 「控制器(不能更正常...):

$pflanzen = $this->Herbar->Pflanzen->find('all',array(
          'fields'=>array('Herbar.name','Pflanzen.linkplatter'), 
          'conditions' => array('Pflanzen.linkplatter' => true), 
          'order' => 'Herbar.name', 
          'limit' => 10, 
          'recursive'=>2) 
         ); 
$this->set('pflanzen',$pflanzen); 

和在視圖中產生的錯誤:

Error: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'Herbar.name' in 'field list' 

SQL Query: SELECT `Herbar`.`name`, `Pflanzen`.`linkplatter`, `Pflanzen`.`id` FROM `burgerbib`.`platter_pflanzen` AS `Pflanzen` WHERE `Pflanzen`.`linkplatter` = '1' ORDER BY `Herbar`.`name` ASC LIMIT 10 

你可以看到他們沒有加入SQL。爲什麼?我錯了什麼? 我會很感激你的幫助,我在尋找小時,也沒有更多的看到任何解決方案,並使用谷歌並沒有找到什麼。提前致謝 !!

+0

錯誤說你沒有在「Herbar」表稱爲「名稱」列在您的數據庫:在中可容納的行爲不會對需求作出反應部隊加入纔有用。你可以檢查是否是這種情況? – Thomas

回答

0

HABTM不作加入了查詢,它使一個查詢需要每個關係,填補了陣列的所有基本記錄和更多的查詢。你的病情假設一個連接,因此錯誤。

可以強制加入使用'joins'參數。 http://book.cakephp.org/1.2/en/view/872/Joining-tables

+0

哦,謝謝!我會仔細看看。我可能混淆了由find()中的Cake自動創建的BelongsTo鏈接。 – user1036495

+0

嗨,中可容納的行爲,甚至更好: http://book.cakephp.org/2.0/fr/core-libraries/behaviors/containable.html#using-containable – user1036495

+0

OK,我錯了。中可容納的行爲僅僅是有益的,使在相關車型的條件下,你不能調節與它相關車型領域的主要模式的結果。只需使用@petervaz所說的連接參數即可。感謝 – user1036495