私のタイトルは素朴に見えますが、可能な限りすべてを読んだり、検索したり、テストしたりしたと言わざるを得ませんが、私の find() メソッドは、SQL クエリの関連テーブルへの JOIN を実装していません。他のプロジェクトでは問題なく数回使用しましたが、ここでは...
ここに私の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 では JOIN ではないことがわかります。どうして ??私は何を間違っていますか?何時間も検索していて解決策が見つからず、Google を使用しても何も見つからなかったので、本当に助けていただければ幸いです。前もって感謝します !!