Фабрики, которых нет в Laravel 6

Я застрял ... Я пытаюсь заставить набор фабрик, работающих в Laravel 6, постоянно получать следующую ошибку:

InvalidArgumentException with message 'Unable to locate factory with name [default] [User].'

Здесь и в Интернете есть еще несколько сообщений об этом, и я пробовал все эти решения. Мой код для фабрик следующий:

<?php

/** @var \Illuminate\Database\Eloquent\Factory $factory */

use App\Thread;
use Faker\Generator as Faker;

$factory->define(Thread::class, function (Faker $faker) {
    return [
        'user_id' => function () {
            return factory('App\User')->create()->id;
        },
        'title' => $faker->sentence,
        'body' => $faker->paragraph
    ];
});

Я использую php artisan tinker, чтобы попытаться создать записи в БД, чтобы я мог работать над остальными моими моделями и т. Д. Я использую следующую команду:

factory('Thread',50)->create()

Я пробовал указывать пространство имен в вызове фабрики, пробовал заключать его в двойные кавычки, пробовал добавлять в конце «:: class». Контроллеры есть, модели есть, миграции работают, как ожидалось, но каждый раз, когда я запускаю фабрику в tinker, она мне не дает. Большая часть найденной мной документации также относится к более старым версиям Laravel, поэтому я не уверен, предоставляют ли они мне правильный синтаксис.

Стоит отметить, что штатный UserFactory тоже не работает. Это свежая загрузка Laravel 6, которую я сделал сегодня, чтобы пройти курс в Laracasts. Курс старше, ориентирован на Laravel 5.4, но я могу понять преобразование ... Я просто не могу заставить это работать, чтобы спасти свою жизнь, и я не могу понять, почему.

У меня есть весь проект, загруженный сюда, если вы хотите просмотреть дополнительный код: https://github.com/aarpie100/laracasts_forum

Помощь?


person Aaron    schedule 08.02.2020    source источник


Ответы (2)


Попробуйте отправить Thread :: class вместо Thread в виде строки. Если вы отправляете в виде строки, я думаю, это должно быть «App \ Thread».

person Avi    schedule 08.02.2020
comment
Я сделал следующее: factory (Thread :: class, 50) - ›create () и получил ту же ошибку :( - person Aaron; 08.02.2020
comment
... Я сейчас в ярости, потому что я только что запустил его с помощью 'App \ Thread', и это сработало ... Я делал это уже 10 раз, и это не удалось ... - person Aaron; 08.02.2020
comment
Итак, я в замешательстве ... Я назвал пространство имен (используйте App \ Thread), разве мне это не нужно? - person Aaron; 08.02.2020

Заводская функция Когда вы вызываете имя класса, вы должны написать его так (Thread :: class)

person matinrashidi7    schedule 09.04.2021