【问题标题】:laravel-permission: assignRole works in Tinker but not in applicationlaravel-permission:assignRole 在 Tinker 中有效,但在应用程序中无效
【发布时间】:2018-08-31 14:19:46
【问题描述】:

在下面查看我的 AdministrationController.php:

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Spatie\Permission\Models\Role;
use Spatie\Permission\Models\Permission;
use Illuminate\Foundation\Auth\User;


class AdministrationController extends Controller
{

    public function index() {

        $user = User::find(1);
        $role = Role::where('name', 'owner')->get()->first();
        $user->assignRole($role);

    }

}

这是我的用户模型的重要部分:

namespace App;
use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Spatie\Permission\Traits\HasRoles;

class User extends Authenticatable
{
    use HasRoles;
    use Notifiable;
    ...
}

奇怪的是,AdministrationController.php 中的 $user->assignRole($role); 行会引发以下错误:

BadMethodCallException
Method Illuminate\Database\Query\Builder::assignRole does not exist.

但是,在 Tinker 中,这个命令序列可以正常工作并产生预期的结果:

>>> $user=User::find(1)
>>> $role=Spatie\Permission\Models\Role::where('name', 'owner')->get()->first()
>>> $user->assignRole($role)

我搜索了这个问题,尝试了一些修复建议,但没有任何帮助。我的 AdministrationController.php / User.php 出了什么问题?

【问题讨论】:

    标签: laravel-5 permissions assign user-permissions laravel-permission


    【解决方案1】:

    好的,我可以解决它。当你知道的时候就这么简单。在AdministrationController.php 中,我将use Illuminate\Foundation\Auth\User; 替换为use App\User;。就是这样……

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-01-28
      • 1970-01-01
      • 1970-01-01
      • 2017-10-19
      • 2015-06-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多