2015-11-14 65 views
0

我已經斌目前正在尋找天沒有解決這個問題:CakePHP的3不是唯一的表/別名:表名

我收到此錯誤信息:
Error: SQLSTATE[42000]: Syntax error or access violation: 1066 Not unique table/alias: 'Posts'

而且這是在我的初始化方法在PostTable類:

public function initialize(array $config) 
{ 
    parent::initialize($config); 

    $this->table('posts'); 
    $this->displayField('post_id'); 
    $this->primaryKey('post_id'); 
    $this->addBehavior('timestamp'); 

    $this->belongsTo('Posts', [ 
     'foreignKey' => 'post_id', 
     'joinType' => 'INNER' 
    ]); 

    $this->belongsTo('Users', [ 
     'className' => 'Users', 
     'foreignKey' => 'fk_post_user_id', //<- foreignkey name are correct 
     'joinType' => 'INNER' 
    ]); 

    $this->belongsTo('Pictures',[ 
     'foreignKey' => 'fk_post_picture_id', 
     'joinType' => 'INNER' 
    ]); 
} 

這是我的數據庫:

Database ERD

我知道錯誤必須做posts表的外鍵,但我不知道在我的初始化方法中belongTo有什麼問題。

回答

0

由於您有自我關聯,您需要爲該關聯使用不同的別名。因此,而不是

$this->belongsTo('Posts', [ 
    'foreignKey' => 'post_id', 
    'joinType' => 'INNER' 
]); 

使用

$this->belongsTo('ParentPosts', [ 
    'className' => 'Posts', 
    'foreignKey' => 'post_id', 
    'joinType' => 'INNER' 
]); 
+0

我需要一個自己的關聯,否則我得到這個錯誤信息:'帖子不與Posts' – YvesHendseth

+0

相關修正你發現()調用。包含關聯時使用'ParentPosts'而不是'Posts'。 – ADmad

+0

btw,@YvesHendseth關於/通過主鍵的自引用關聯,對我來說沒有多大意義? o_O – ndm

相關問題