2013-03-08 78 views
0

我需要加入一個模型本身...但我得到的錯誤「不是唯一的表/別名:‘圖像’」CakePHP的模型包含iteself

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它給我的錯誤「不是唯一的表/別名:‘形象’」。 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

爲什麼需要加入?簡單地選擇「id」和「thumbnail_image_id」字段有什麼問題? – Oldskool 2013-03-09 00:11:00

回答

1

問題是,您在$ belongsTo和$ hasOne中都使用了Thumbnail。

該模型將不知道哪個關聯用於「包含」。

重命名或刪除其中的一個關聯以使其唯一。