Laravel 5 — вызов неопределенного метода App \ Role :: firstOrCreate ()

Я получаю очень странную ошибку в Laravel 5.5, когда пытаюсь запустить мои семена базы данных. Когда я бегу php artisan db:seed --class=RoleSeederЯ получаю следующую ошибку:

Вызов неопределенного метода App \ Role :: firstOrCreate ()

Вот мой RoleSeeder учебный класс:

<?php

use Illuminate\Database\Seeder;class RoleSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{//Application User: All users have this role be default
$r = \App\Role::firstOrCreate(['name'=>'app-user'],
[
'name'         => 'app-user',
'display_name' => 'All users of the application',
'description'  => 'Uses the application',
]
);}
}

Я использовал этот фрагмент кода несколько раз во многих проектах Laravel 5.4 без проблем. Эта ошибка возникла в другом проекте Laravel 5.5, который загадочным образом разрешился, но теперь я не могу понять, почему это происходит снова в новом проекте.

Когда я запускаю приведенный выше фрагмент кода в laravel tinker (интерактивная сессия php), он работает безупречно, как и ожидалось.

Я проверил firstOrCreate функция существует в
vendor/laravel/src/Illuminate/Database/Eloquent/Builder.php,

мой Role Класс напрямую копируется из вверять документация библиотеки:

<?php namespace App;

use Zizaco\Entrust\EntrustRole;

class Role extends EntrustRole
{
}

Когда я меняю Role класс для расширения Model непосредственно, db:seed Команда работает нормально. Однако ошибка возникает, когда Role продолжается EntrustRole, который определяется следующим образом:

class EntrustRole extends Model implements EntrustRoleInterface
{
//..

Сейчас я буду применять обходной путь, но если кто-то может пролить свет на то, почему это работает хорошо в php artisan tinker, но не при работе в качестве сеялки, это было бы здорово.

Редактировать:
После дальнейшего исследования, это, кажется, происходит очень спорадически:

user@localmachine:/var/www/MyProject$ sudo php artisan cache:clear
Cache cleared successfully.
user@localmachine:/var/www/MyProject$ sudo php artisan db:seed
Seeding: RoleSeeder[BadMethodCallException]
Call to undefined method App\Role::firstOrCreate()user@localmachine:/var/www/MyProject$ sudo php artisan cache:clear
Cache cleared successfully.
user@localmachine:/var/www/MyProject$ sudo php artisan cache:clear
Cache cleared successfully.
user@localmachine:/var/www/MyProject$ sudo php artisan cache:clear
Cache cleared successfully.
user@localmachine:/var/www/MyProject$ sudo php artisan cache:clear
Cache cleared successfully.
user@localmachine:/var/www/MyProject$ sudo php artisan db:seed
Seeding: RoleSeeder
Seeding: UserSeeder

0

Решение

После переключения драйвера кеша на redis проблема теперь решена. Теперь я понимаю, что это, вероятно, «таинственно» исправило и мой другой проект Laravel 5.5 (когда я переключил драйвер кеша на memcached). Похоже, ошибка с Laravel 5.5 и драйвером файлового кэша

0

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

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

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector