Laravel Entrust изменить имя таблицы

Я использую мульти аутентификацию laravel 5.2, поэтому вместо таблицы пользователя я создал новую таблицу управления.

Я установил Entrust для ролей и разрешений. Во время установки entrust я изменил entrust: перенос контента как:

public function up()
{
// Create table for storing roles
Schema::create('roles', function (Blueprint $table) {
$table->increments('id');
$table->string('name')->unique();
$table->string('display_name')->nullable();
$table->string('description')->nullable();
$table->timestamps();
});

// Create table for associating roles to users (Many-to-Many)
Schema::create('role_management', function (Blueprint $table) {
$table->integer('management_id')->unsigned();
$table->integer('role_id')->unsigned();

$table->foreign('management_id')->references('id')->on('managements')
->onUpdate('cascade')->onDelete('cascade');
$table->foreign('role_id')->references('id')->on('roles')
->onUpdate('cascade')->onDelete('cascade');

$table->primary(['management_id', 'role_id']);
});

// Create table for storing permissions
Schema::create('permissions', function (Blueprint $table) {
$table->increments('id');
$table->string('name')->unique();
$table->string('display_name')->nullable();
$table->string('description')->nullable();
$table->timestamps();
});

// Create table for associating permissions to roles (Many-to-Many)
Schema::create('permission_role', function (Blueprint $table) {
$table->integer('permission_id')->unsigned();
$table->integer('role_id')->unsigned();

$table->foreign('permission_id')->references('id')->on('permissions')
->onUpdate('cascade')->onDelete('cascade');
$table->foreign('role_id')->references('id')->on('roles')
->onUpdate('cascade')->onDelete('cascade');

$table->primary(['permission_id', 'role_id']);
});
}

а также entrust.php как:

return [
'role' => 'App\Role',
'roles_table' => 'roles',
'permission' => 'App\Permission',
'role_user_table' => 'role_management',
];

а у меня 3 модели, роль и разрешение и управление. Все отлично работает, но проблема в том, когда я хочу прикрепить роли в role_management таблица с кодом ниже:

public function store(userManagementFormRequest $request)
{
$user=new Management(array(
'name'=>$request->get('name'),
'password'=>bcrypt($request->get('password')),
));
$user->save();
$user->attachRoles($_POST['role']);
return redirect()->back()->with('userStatus','عملیات با موفقیت انجام گردید.');
}

это покажет ошибку:

SQLSTATE [42S02]: Базовая таблица или представление не найдено: 1146 Таблица «digikala.management_role» не существует (SQL: вставить в management_role (created_at, management_id, role_id, updated_at) значения (2016-03-21 14:26:24, 1, 1, 2016-03-21 14:26:24))

Я не знаю почему это показывает management_role вместо role_managementв то время как правильное имя таблицы role_management, Кроме того, у меня есть только две колонки, management_id а также role_id, в этой таблице, но и в этой ошибке он хочет вставить created_at а также updated_at в эту таблицу.

Я использовал composer config: кеш и composer cache: очистить и создать дамп-автозагрузку, но ничего не произошло.

Что-то не так в моем коде?
модель управления:

namespace App;

use Illuminate\Foundation\Auth\User as Authenticatable;
use Zizaco\Entrust\Traits\EntrustUserTrait;

class Management extends Authenticatable
{
use EntrustUserTrait;
protected $table='managements';
protected $fillable=['name','password'];
public function roles()
{
return $this->belongsToMany('App\Role')->withTimestamps();
}
}

2

Решение

Нет необходимости переопределять roles функция отношений. Он уже существует в EntrustUserTrait,

Вы можете удалить его, и он должен работать.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]