База данных не заполняется правильными фабриками и классом сеялки в Laravel

Проблема в том, что моя база данных не заполнена php artisan db:seed в моем проекте laravel. никаких ошибок не отображается, и после команды моя база данных просто пуста, но php artisan db:seed показывает результат успеха.

Это мой метод запуска в файле DatabaseSeeder.php в папке базы данных/сидеров в моем проекте laravel.

$this->call([
    ItemBrandSeeder::class,
    ItemDepartmentSeeder::class,
    ItemUnitSeeder::class,
    CategorySeeder::class,
    ItemSeeder::class
]);

Это мой метод запуска в ItemBrandSeeder.php в папке базы данных/сидеров в моем проекте laravel.

ItemBrandFactory::times(100);

Это мой метод определения в ItemBrandFactory.php в папке базы данных/фабрик в моем проекте laravel.

return [
    'stvalue1' => $this->faker->randomElement(['BOX', 'PCS', 'NOS', 'PACK']),       
    'stdescription' => $this->faker->text('30'),
    'stvalue2' => $this->faker->randomElement(['Countable', 'Measurable']),
    'stflag' => "UNIT"
];

Это мой метод запуска в ItemDepartmentSeeder.php в папке базы данных/сидеров в моем проекте laravel.

ItemDepartmentFactory::times(25);

Это мой метод определения в ItemDepartmentFactory.php в папке базы данных/фабрик в моем проекте laravel.

return [
    'stCategory' => $this->faker->text(25),
    'sttype' => ['department']
];

Это мой метод запуска в ItemUnitSeeder.php в папке базы данных/сидеров в моем проекте laravel.

DB::connection("dynamic_db")->table('tblgeneral')->insert([
    [
        'stflag' => 'UNIT',
        'stdescription' => "Pieces",
        'stvalue1' => "PCS",
        'stvalue2' => "Countable"
    ],

    [
        'stflag' => 'UNIT',
        'stdescription' => "Box",
        'stvalue1' => "BOX",
        'stvalue2' => "Countable"
    ],

    [
        'stflag' => 'UNIT',
        'stdescription' => "Bar",
        'stvalue1' => "BAR",
        'stvalue2' => "Measurable"
    ],

    [
        'stflag' => 'UNIT',
        'stdescription' => "Nos",
        'stvalue1' => "NOS",
        'stvalue2' => "Measurable"
    ],

    [
        'stflag' => 'UNIT',
        'stdescription' => "Feet",
        'stvalue1' => "FT",
        'stvalue2' => "Measurable"
    ],
]);

Для ItemUnitSeeder нет фабричного класса Это мой метод запуска в CategorySeeder.php в папке database/seeders в моем проекте laravel.

CategoryFactory::times(50);

Это мой метод определения в CategoryFactory.php в папке базы данных/фабрик в моем проекте laravel.

return [
    'stCategory' => $this->faker->text(25),
    'sttype' => ['category']
];

Это мой метод запуска в ItemSeeder.php в папке базы данных/сидеров в моем проекте laravel.

ItemFactory::times(1000);

Это мой метод определения в ItemFactory.php в папке базы данных/фабрик в моем проекте laravel.

$edate = array(\Carbon\Carbon::create('1973-09-17 04:30:43'), \Carbon\Carbon::now())[rand(0, 1)];
$unit2 = array('na', 1, 2, 3, 4, 5)[rand(0, 5)];
$purchasePrice = $this->faker->numberBetween(200, 10000);
$retailPrice = $purchasePrice + ($this->faker->numberBetween(5, 40) / 100 * $purchasePrice);
$minPrice = $retailPrice + $this->faker->numberBetween(0, 50);
$supplierGivenDiscount = $this->faker->numberBetween(0, 10);
$retailDiscount = $this->faker->numberBetween(0, 5);
$unit2Def = $this->faker->numberBetween(2, 12);
$unit2Price = ($retailPrice / $unit2Def) / 100 * rand(1, 50);
$wholesalePrice = $retailPrice - $this->faker->numberBetween(0, 5) / 100 * $retailPrice;
$wholesaleDiscount = $wholesalePrice - $this->faker->numberBetween(0, 3) / 100 * $wholesalePrice;

return [
    'stItemCode' => getSerialNo('item'),
    'stDescription' => $this->faker->text(100),
    'stCategory' => rand(0, 50),
    'stUnit1' => rand(0, 5),
    'stBrand' => rand(0, 100),
    'stDepartment' => rand(0, 25),
    'stDescription2' => $this->faker->text(200),
    'daEdate' => $edate,
    'tiContaminable' => $edate->eq(\Carbon\Carbon::create('1973-09-17 04:30:43')),
    'dbMinPrice' => $minPrice,
    'dbPurchasePrice' => $purchasePrice,
    'dbSupplierGivenDiscount' => $supplierGivenDiscount,
    'dbRetailPrice' => $retailPrice,
    'dbRetailPriceDiscount' => $retailDiscount,
    'stShelf' => rand(0, 30),
    'siItemType' => rand(0, 3),
    'stUnit2' => $unit2,
    'dbUnit2Price' => $unit2 != 'na' ? $unit2Price : 0,
    'dbUnit2Def' => $unit2 != 'na' ? $unit2Def : 0,
    'dbWholeSalesPrice' => $wholesalePrice,
    'dbWholeSalesPriceDiscount' => $wholesaleDiscount,
    'dbReorderLevel' => 0,
    'stBranch' => Branch::all()->toArray()[rand(0, Branch::count())]['id'],
    'stWebUpdateStatus' => 1,
];

Команда и вывод в консоль

Command and output in console

Но в моей базе данных данные не заполняются моя база данных просто пуста.

В случае, если вам интересно, почему я использовал класс DB для создания ItemUnits в файле ItemUnitSeeder.php, это потому, что мне нужно было только 5 единиц, поэтому я подумал, что создание Factory для этого бесполезно.

Фабрика категорий, фабрика брендов предметов и фабрика отделов предметов, использующие одно и то же имя таблицы, называемое «tblCategory», отличаются только полем «sttype». если для "sttype" установлено значение "category", то это категория, а если для него установлено значение "brand", то его бренд и так далее.

3 метода стилизации элементов HTML
3 метода стилизации элементов HTML
Когда дело доходит до применения какого-либо стиля к нашему HTML, существует три подхода: встроенный, внутренний и внешний. Предпочтительным обычно...
Формы c голосовым вводом в React с помощью Speechly
Формы c голосовым вводом в React с помощью Speechly
Пытались ли вы когда-нибудь заполнить веб-форму в области электронной коммерции, которая требует много кликов и выбора? Вас попросят заполнить дату,...
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Будучи разработчиком веб-приложений, легко впасть в заблуждение, считая, что приложение без JavaScript не имеет права на жизнь. Нам становится удобно...
Flatpickr: простой модуль календаря для вашего приложения на React
Flatpickr: простой модуль календаря для вашего приложения на React
Если вы ищете пакет для быстрой интеграции календаря с выбором даты в ваше приложения, то библиотека Flatpickr отлично справится с этой задачей....
В чем разница между Promise и Observable?
В чем разница между Promise и Observable?
Разберитесь в этом вопросе, и вы значительно повысите уровень своей компетенции.
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Клиент для URL-адресов, cURL, позволяет взаимодействовать с множеством различных серверов по множеству различных протоколов с синтаксисом URL.
0
0
33
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Ваш код правильный, и проблем нет, но я думаю, что ваша проблема здесь: Вместо использования times() Используйте такой коэффициент: Item::factory()->count(1000)->create();

Non-static method Illuminate\Database\Eloquent\Factories\Factory::count() cannot be called statically
r00tk1ll3r 23.04.2022 13:19

Вы должны вызвать на завод через Модель: YourModelName::factory()->count(1000)->create();

Keyvan Gholami 23.04.2022 13:34

Другие вопросы по теме