2016-09-27 5 views
1

Я использую зависимость Zizaco/entrust для создания ролей и их разрешений в моем веб-приложении, которое создается в laravel 5.3. Проблема, с которой я столкнулась, - это (как говорится в заголовке) всякий раз, когда я пытаюсь сохранить недавно созданное разрешение. Он хранится в таблице roles.Zizaco/entrust Разрешение на сохранение использует таблицу ролей

Файл миграции не был изменен с исходного пакета zizaco/entrust. Для создания миграции я использовал php artisan vendor:publish. Модели роли и разрешения вполне как документация говорит:

namespace App\Models; 

use Zizaco\Entrust\EntrustRole; 

class Role extends EntrustRole 
{ 

protected $table = 'roles'; 

/** 
* The attributes that are mass assignable. 
* 
* @var array 
*/ 
    protected $fillable = [ 
     'name', 'display_name', 'description', 
    ]; 
} 

И разрешение

namespace App\Models; 

use Zizaco\Entrust\EntrustRole; 

class Permission extends EntrustRole 
{ 

protected $table = 'permissions'; 

/** 
* The attributes that are mass assignable. 
* 
* @var array 
*/ 
protected $fillable = [ 
     'name', 'display_name', 'description', 
    ]; 
} 

и в файле сеялка, я использую следующий код для создания роли и сеялки:

use App\Models\Permission; 
use App\Models\Role; 
use Illuminate\Database\Seeder; 

class RoleSeeder extends Seeder 
{ 
/** 
* Run the database seeds. 
* 
* @return void 
*/ 
public function run() 
{ 
    $owner = new Role(); 
    $owner->name   = 'owner'; 
    $owner->display_name = 'Eigenaar'; 
    $owner->save(); 

    $createOwner = new Permission(); 
    $createOwner->name   = 'create-owner'; 
    $createOwner->display_name = 'Eigenaar toevoegen'; 
    $createOwner->save(); 
} 

Конфигурационный файл поручения также изменяется на правильный путь для модели Role and Permission и таблиц.

Я пробовал компоновщик дамп-автозагрузка и даже кеш php-artisan: ясный.

Есть ли что-то, что я пропустил? пожалуйста помоги. Прошу простить мой английский, если он не является грамматически правильным.

EDIT: когда я пытаюсь прикрепить свое разрешение на роль следующей строки:

$owner->attachPermission($createOwner); 

я получаю Ошибку SQL:

SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fail s (reunions_dev . permission_role , CONSTRAINT permission_role_permission_id_foreign FOREIGN KEY (permission_id) REFERENCES permissions (id) ON DELETE CASCADE ON UPDATE CASCADE)

, что не потому, что там нет записи разрешения для привязки идентификатора к. вид очевидный.

ответ

0

The problem I am having is (as the title says) whenever I try to save a newly created Permission. It is stored in the roles table.

Глядя на код, который вы предоставили, вы расширили неправильный класс для своей модели Permission. Изменение простирающегося класса используйте оператор & в вашем Разрешения модели EntrustPermission:

use Zizaco\Entrust\EntrustPermission; 

class Permission extends EntrustPermission 
+0

ThankYou для принятия взгляда на моем коде. Я не могу поверить, что раньше этого не видел! Теперь я получаю еще одну ошибку. когда я пытаюсь инициализировать его в классе сеялки, я продолжаю получать ошибку: 'Обязательный параметр $ auth missing', вы знаете, как я могу это исправить? – Hoffie

Смежные вопросы