Relations Eloquent

Par Grinvald, il y a 10 ans


Bonjour,

J'ai un petit soucis avec les relations Eloquent dans laravel 5.2

J'ai 2 tables : Users et Dossiers
Un user peut avoir plusieurs dossiers et un dossier appartient à un seul user, jusque là rien de compliqué.

Mes Models (juste les relations) :

class User extends Model { public function dossiers() { return $this->hasMany('App\Dossier'); } } class Dossier extends Model { public function user() { return $this->belongTo('App\User'); } }

Mon problème est que le code suivant marche

$users = User::with('dossiers')->get();

Mais l'inverse me renvoit une erreur :

$dossiers = Dossier::with('user')->get();

l'erreur est la suivante :

BadMethodCallException in Builder.php line 2161: Call to undefined method Illuminate\Database\Query\Builder::belongTo()

Il doit y avoir quelquechose que je n'ai pas saisi dans le fonctionnement des relations, si quelqu'un pouvez m'expliquer, ce serait gentil.

Merci.

2 réponses

Azorgh, il y a 10 ans

Hello,

A première vue, tu as parfaitement compris les relations.
Cependant, un conseil : Nomme tes models en anglais ! Ou alors tout en français.
Parce que la, un User hasMany Dossier, c'pas top. Alors que un User HasMany Folders, c'est plus cool :)

Il s'agit simplement du nom de ta méthode qui n'est pas la bonne, ce n'est pas a belongTo mais belongsTo.
Fait attention à ça, et un petit tour sur la doc (avec un vieux copié/collé) t'aurais peut être pu éviter quelques recherches :)

Grinvald, il y a 10 ans

Oo, en effet je suis passé à côté de l'erreur de syntaxe.

Je prends note pour les conventions de nommage.

Merci bien.