我的标题看起来很幼稚,但我不得不说我已经阅读/搜索/测试了所有可能的东西,但是我的 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 的。为什么 ??我错了什么?我非常感谢您的帮助,因为我正在寻找几个小时并且不再看到任何解决方案并且没有使用谷歌找到任何东西。提前致谢 !!