0

Eloquentを使用して、ユーザーが多くのロールを持つことができるLaravel 4を使用して、ユーザーロールモデルを持っています。このコードを使用して、ユーザーにリンクされたすべてのロールに簡単にアクセスできます。

class User extends Model {
    protected $table = 'user';
    protected $fillable = array('name');

    public function rolesLinked() {
        return $this->hasMany('App\UserRoleLink', 'user_id');
    }
}

ユーザーにリンクされていないロールを取得して、特定のユーザーのページの選択ボックスに表示しようとしています。User クラスに含まれるこの関数を使用します。

public function rolesNotLinked() {
    $user = this
    $roles = Roles::whereDoesntHave('App\UserRoleLink',function($query) use ($user){
        $query->where('user_id',$user->id);
    });
}

問題は、この関数を呼び出すと次のエラーが発生することです。

Call to undefined method Illuminate\Database\Query\Builder::App\UserRoleLink()

関数に問題があるかどうかを確認するために has < 1 を使用してみましたが、これとオンライン ソース コードを読んだ後、関数呼び出しは私が試したこととほとんど同じです。

関数呼び出しに何か問題がありますか、またはどこかで構成を台無しにしましたか?

参考までに、他のモデル クラスを次に示します。

class UserRoleLink extends Model{
     protected $table = 'user_role_link';
     protected $fillable = array('role_id','user_id);

    public function role() {
        return $this->hasOne('App\Role', 'role_id');
    }
}

class Role extends Model{
     protected $table = 'role';
     protected $fillable = array('name');
}

編集:コピーして貼り付けたときに、fillables によって台無しになっていることがわかりました。問題は解決しませんでしたが、一歩近づいたと思います。

4

1 に答える 1