Laravel 5 de l'Interrogation avec les relations de causes "Appel à une fonction membre addEagerConstraints() sur null" erreur

j'ai essayé de créer un simple système de gestion des utilisateurs, mais je n'ai pas arrêté de bloquer les choses quand il s'agit d'interroger les relations. Par exemple, j'ai utilisateurs et rôles et à chaque fois que j'essaie de faire une requête pour tous les utilisateurs et leurs rôles, j'obtiens une erreur. Celui du titre n'est que le dernier que j'ai rencontré.

Mon Utilisateur et des Modèles de Rôle ressembler à ceci:

class Role extends Model
{
    public function users()
    {
        $this->belongsToMany('\App\User', 'fk_role_user', 'role_id', 'user_id');
    }
}

class User extends Model
{
    public function roles()
    {
        $this->belongsToMany('\App\Role', 'fk_user_role', 'user_id', 'role_id');
    }
}

ma table de migration pour plusieurs-à-plusieurs relations entre les deux ressemble à ceci:

public function up()
    {
        Schema::create('role_user', function (Blueprint $table) {
            $table->increments('id');
            $table->integer('user_id')->unsigned()->nullable(); //fk => users
            $table->integer('role_id')->unsigned()->nullable(); //fk => roles

            $table->foreign('fk_user_role')->references('id')->on('users')->onDelete('cascade');
            $table->foreign('fk_role_user')->references('id')->on('roles')->onDelete('cascade');
        });
    }

Et puis j'ai essayer d'obtenir tous les records avec leur relation dans un contrôleur:

public function index()
{
    $users = User::with('roles')->get();

    return $users;
}

alors j'ai besoin d'une autre paire d'yeux pour me dire ce qui me manque ici?

25
demandé sur jedrzej.kurylo 2015-07-21 20:44:50
la source

1 ответов

il Vous manque retour interventions dans les méthodes qui définissent les relations. Ils doivent retourner la définition de la relation.

Remplacer

public function roles()
{
    $this->belongsToMany('\App\Role', 'fk_user_role', 'user_id', 'role_id');
}

public function roles()
{
    return $this->belongsToMany('\App\Role', 'role_user', 'user_id', 'role_id');
}
73
répondu jedrzej.kurylo 2015-12-17 12:30:11
la source

Autres questions sur