Laravel 5委托attachRolle

Laravel 5 entrust attachRolle

我在 laravel 5 上犯了一个错误,我暂时无法解决。我在 Laravel 5 中使用 Zizaco/Entrust 但我无法正确设置用户模型的特征。我在调用用户模型时 运行 出错了。这是我的用户模型:

use Zizaco\Entrust\Traits\EntrustUserTrait; // I think it it's causing a problem.
use Illuminate\Auth\Authenticatable;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Auth\Passwords\CanResetPassword;
use Illuminate\Contracts\Auth\Authenticatable as AuthenticatableContract;
use Illuminate\Contracts\Auth\CanResetPassword as CanResetPasswordContract;

class User extends Model {

use EntrustUserTrait; //or this

use Authenticatable, CanResetPassword;


protected $table = 'users';

protected $fillable = ['name', 'email', 'password'];

protected $hidden = ['password', 'remember_token'];

}

这是导致错误的行:

$user->attachRole($owner);

据我了解,我的用户模型无法扩展特征方法。

错误: 调用未定义的方法 Illuminate\Database\Eloquent\Collection::attachRole()

有什么建议吗?谢谢!

问题不在于对 attachRole() 本身的调用,而在于您调用它的内容。 $user 不是模型而是 collection。您可能只需要在获取用户的查询中将 get() 切换为 first()。类似于:

$user = User::where(...)->first();
$user->attachRole($owner);