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
Réponse acceptée

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
Auteur

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

Je prends note pour les conventions de nommage.

Merci bien.