2014-09-02 117 views
1

我想拉一個屬於某個用戶的字符列表。當我提出請求時,我得到一個SQL錯誤。通過錯誤的閱讀,它試圖給我們不存在的領域。雄辯的表關係

錯誤:

SQLSTATE[42000]: Syntax error or access violation: 1066 Not unique table/alias: 'characters' (SQL: select `characters`.*, `characters`.`id` as `pivot_id`, 
`characters`.`character_id` as `pivot_character_id` 
from `characters` inner join `characters` on `characters`.`id` = `characters`.`character_id` where `characters`.`id` = 1) 

「character_id」 並不在我的數據庫存在。問題是我無法找到雄辯的地方。我通過源代碼看了一下,有很多的「如果不提供使用$variable.'_id'。我找不到任何代碼的任何地方爲這雖然。

模型如下。

class Character extends Eloquent { 

    protected $guarded = array('id'); 

    protected $table = 'characters'; 

    public function User() 
    { 
     return $this->belongsTo('User', 'id'); 
    } 
} 


class User extends Eloquent implements UserInterface, RemindableInterface { 

    use UserTrait, RemindableTrait; 

    protected $table = 'users'; 

    protected $hidden = ['password', 'remember_token']; 

    protected $guarded = ['password']; 

    public function Character() 
    { 
     return $this->belongsToMany('Character', 'characters', 'id'); 
    } 
}  

有一個。在用戶表user_id中的字符表,id之間的外鍵

+0

所以你只有兩個表? – 2014-09-02 03:54:35

+0

是的,我應該多吃點嗎? – 2014-09-02 10:29:59

回答

1

belongsToMany是many-to-many relations,因爲它預計第三臺Laravel拋出你的錯誤 - 透視表 - 含有character_id和USER_ID

如果你不想多對多,但one-to-many那麼你應該使用hasMany和belongsTo。

+0

謝謝!現在工作。 – 2014-09-02 10:31:58