我需要将模型加入到自身......但我收到错误“Not unique table / alias:'Image'”
Image
架构:
id: int
thumbnail_image_id: int null
key: varchar... filename
location: varchar... s3 or local
created: datetime
modified: datetime
Image
型号:
<?php
App::uses('AppModel', 'Model');
class Image extends AppModel {
public $belongsTo = array(
'Thumbnail' => array(
'className' => 'Image',
'foreignKey' => 'thumbnail_image_id'
)
);
public $hasOne = array(
'Thumbnail' => array(
'className' => 'Image',
'foreignKey' => 'thumbnail_image_id'
)
);
public function exampleFunction() {
return $this->find('all', array(
'contain' => array('Thumbnail')
));
}
运行exampleFunction
它会给我一个错误“Not unique table / alias:'Image'”。 CakePHP像这样构建SQL:
SELECT `Image`.`id`, `Thumbnail`.`id` FROM `images` AS `Image` LEFT JOIN `images` AS `Image`.`thumbnail_image_id` = `Thumbnail`.`id`;
但它应该是这样的......对吗? (注意倒置的ON
):
SELECT `Image`.`id`, `Thumbnail`.`id` FROM `images` AS `Image` LEFT JOIN `images` AS `Thumbnail`.`id` = `Image`.`thumbnail_image_id`;
如果我在mysql控制台中运行上面的两个SQL查询,则第二个工作。
建议?
答案 0 :(得分:1)
问题是您在$ belongsTo和$ hasOne中都使用了Thumbnail。
模型将不知道用于'包含'的关联。
重命名或删除您的一个关联,以便它们是唯一的。