J'essaie de tirer une liste de caractères qui appartiennent à un certain utilisateur. Lorsque je fais la demande, je reçois une erreur SQL. En lisant l'erreur, nous essayons de trouver des champs qui n'existent pas.Relations de table éloquentes
Erreur:
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" n'existe pas dans ma base de données. Le problème est que je ne peux pas trouver où Eloquent fait ce champ. Je regardais à travers le code source et il y avait beaucoup de « Si ce n'est pas fourni l'utilisation $variable.'_id'
. Je ne pouvais pas trouver ce code partout pour ce bien.
Les modèles sont ci-dessous.
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');
}
}
Il y a un . clé étrangère entre user_id
les caractères table, et id
dans la table des utilisateurs
alors vous n'avez que deux tables? –
Oui, devrais-je en avoir plus? –