Laravel курс с нуля, база. 28. Классы Factory и Seed в Laravel
HTML-код
- Опубликовано: 7 фев 2025
- Стань спонсором(бусти аккаунт), доступ к собеседованиям:
boosty.to/lara...
Мои платные курсы:
laravelcreativ...
План развития с нуля до middle+:
laravelcreativ...
Группа вк:
laravel...
Ссылка для донатов, спонсорства, пожертвований
yoomoney.ru/to...
www.donational...
-
. ---
. .
как же я был рад посмотрев этот урок, надоело уже писать все это вручную
для Laravel 10:
return [
'title'=>fake()->title(20),
'content'=>fake()->text(30),
'image'=>fake()->imageUrl(),
'likes'=>random_int(1,200),
'is_published'=>1,
'category_id'=>Category::get()->random()->id,
];
Хочу оставить свою благодарность автору видео
Отсмотрел последовательно штук 40 уроков. Ни на что не надеялся. По факту для меня это самые классные уроки оказались из всей кучи просмотренного. Причем я не хочу принижать заслуги других каналов - есть немало отличных образовательных видосов. А этот канал таков, что классные тут все, т.е. массовых знак качества
Кроме очевидных плюсов, которые наверняка отметили другие зрители, я хочу особо отметить то, что самое ценное для меня - автор показывает, какие техники кодинга НЕ надо применять, и какие надо, и объясняет почему. ВОТ ЭТО Я ДАВНО искал - инфу из практического опыт работы за деньги
Автору искренняя благодарность, буду смотреть и учиться остальные штук 80 видосов, заканчивая производством магазина, хоть VUE мне нафиг не нужен
Привет! Как дела у тебя, устроился на роботу?
@@andrewlevitsky6270 нет, я даже не пытался. Пришлось на много месяцев прекратить образовательный процесс, у нас тут пиздец настал, снаряды начали летать и взрываться...
Недавно опять начал учиться кодить. И кстати мне донесли важную вещь - так учиться неправильно и глупо. Надо поставить себе задачу - сделать написать небольшой интернет магазин, в образовательных целях. Когда сделал - значит готов идти работать.
Вот этим и занимаюсь, причем с удовольствием. Так значительно больше мотивация
P.S. Бро, а ты кто ? :))
@@gangster_dude ООО, я тоже из Украины, а именно Киев ))
Тоже первые пару месяцев было шумновато, а потом осенью блекауты, все против меня
@@andrewlevitsky6270 блэкауты я помню, романтика блин :) У меня в город наприлетало много, и в мой микрорайн, и в соседний дом и тд.... страшно вспоминать
А блэкауты закончились 9 марта.
Что там у вас с наводнениями, плаваете еще ?
Давно меня мучило это страшное слово "фабрика"! Спасибо, что как всегда, очень доступно и наглядно объяснил!))
Да, ничего сложного) Благодарю!)
Небольшой казус восприятия инфы..
Урок 19, 7:24 - в модели Post в методе tags() фигурирует таблица post_tags
Урок 24 - удалены старые модели, напрямую создана таблица post_tag...
Урок 25 - Автор "вернул всё так как оно и было", не уточнив осталось ли что-то с 24-го урока, в Post.php "было" post_tags, а после "вернул всё как было" уже стало post_tag, и это выпало из внимания
Урок 28 - Выполняем php artisan migrate:fresh --seed (таблица уже post_tag) и оно ругается что нет такой таблицы post_tags, а её блин и не должно быть, но она осталась прописана в модели Post.php, а то ругалось на ошибку SQLSTATE[42S02]: Base table or view not found: 1146 Table 'first_project.post_tags' doesn't exist и не хотело кушать миграцию...
Мораль басни. Откаты дело нехитрое, понять можно по всякому.
Яро плюсую)
Офигенный инструмент эти фабрики. Их осваивать нужно как можно быстрее, сэкономит в будущем тонны времени при дальнейшей учебе.
Автору спасибо за уроки!
Спасибо, за урок! Очень крутая и простая подача материала!
Благодарю!)
ура, больше не придется для тестов вручную вводить кучу данных!😄
Ахах да)!)
В сидере сделал так, чтобы случайное количество тегов прикреплялось:
Category::factory(21)->create();
$tags = Tag::factory(37)->create();
$posts = Post::factory(98)->create();
$posts->map(function ($post) use ($tags) {
$tagsCount = random_int(1, 9);
$tagsForPostIds = $tags->random($tagsCount)->pluck('id');
$post->tags()->attach($tagsForPostIds);
});
Супер полезно Laravel, спасибо!
Благодарю)!
Отличный урок!
Благодарю!)
отличный урок!
Благодарю!)
Спасибо за отличный урок! 😊
Спасибо большое!!!!
камент для продвижения
Благодарю!)
Погуглил я немного, так как захотелось более реальные изображения. Можно делать так
'image' => $this->faker->imageUrl(200, 150,'cats')
Но жалко, что меняется только надпись
К сожалению да)
У автора на 1:33 прям явно в списке - db:seed.
Все работает, только не ясно почему в уроке таблица post_tag заполнилась, а у меня нет? У меня пишет ошибку " SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'tag_id' cannot be null"
Спасибо за урок, как же быстро можно оказывается данных накидать. Особенно с тэгами интересно.
Если у вас ошибка "Call to undefined method App\Post::factory()" и если в классе Post нет метода HasFactory, то попробуйте это: $posts = factory(Post::class)->times(10)->make();
Спасибо!
Все работает, но один вопрос, как Laravel понимает какую фабрику куда нужно использовать? Ведь нет никакой связки между DatabaseSeeder и TagFactory например, чисто по имени файла понимает?
Например Tag::factory(20)->create() - у меня скажем 10 фабрик, как он понял что нужно юзать именно TagFactory? В model/Tag тоже нет связки между им и TagFactory
Тоже стало интересно как оно там работает внутри, покопался в коде,
и так.
в модели мы прописываем use HasFactory; чтобы использовать методы фабрики, напр. factory()
в этом методе есть код (упрощаю)
$factory = Factory::factoryForModel(get_called_class());
в методе factoryForModel
$factory = static::resolveFactoryName($modelName);
и в resolveFactoryName такой код
return static::$namespace.$modelName.'Factory';
то есть берется название модели и к нему прибавляется 'Factory' получаем название фабрики, которую и нужно использовать.
Вот она, магия ларавел))) Подозреваю что тут многие вищи работают подобным образом, просто нужно придерживаться определенных правил наименования и фреймворк многие вещи сделает сам.
Привет Спасибо за урок. Тут у меня такой ошибка Argument '1' passed to random() is expected to be of type Closure|null, int given
Местная фабрика имеет отношение к одноименному паттерну?! Вообще тему паттернов неплохо было бы сюда подтянуть, так как в ларавел их используется много.
Имеет, но реализовано под модели laravel. Паттерны можно, но потом:)
Все записи с категориями добавились, кроме кроме таблицы post_tags, она пустая. Вылетела ошибка Call to undefined method App\Models\Post::tag() Что с этим делать? UPD: потерял 1 букву в названии функции)) Но интересно что PHPstorm не подсветил ошибку, а наоборот подсветил ее когда я изменил название функции на правильное)))
Спасибо за урок. Пошагово все разжевали) Сделал немного по другому. Через ModelSeeder и тут как раз пригодилась модель PostTag. Сгенерировал кол-во постов и тегов перемножил их для count(). Но в базу добавилось только 1000 записей, а по факту у меня 2250. База SQLite. Это где-то ограничение стоит или особенности данной базы? И вообще можно ли так делать? или правильнее будет как в уроке генерировать таблицу PostTag?
Можно делать как угодно, если это работает и отвечает требованиям безопасности и экономности ресурсов) В данном случае, требования никаких не было) Так что можно:) По поводу ограничений, точно не скажу) Но sqlite в рабочих проектах лучше не использовать) Только в качестве обучения азам
фабрика это Factorio ))
у кого Laravel 9 вместо $this->faker-> надо использовать fake()->
seeder = сеятель
Благодарю!)
Не понятно все равно каково практическое применение, что в редакторе заполнять, что в базе как бы невилика разница по объему труда
Ты что, дурак? Ты условно сделаешь новую миграцию, обновишь их и все изменения в таблице сбросятся. Если у тебя есть фабрика, тебе достаточно запустить одну команду. А если таким обновлений с миграциями будет много, ты будешь каждый раз заполнять вручную таблицы? А если для тестировки нужно 5000-10000 тысяч постов. Прям смешно
все там было вы проморгали артисан db:seed
Спасибо)
Can you give source code your tutorials ?
Sorry, but it doesnt exisist(
Доброго времени суток, подскажите, пожалуйста... Когда прописываю use HasFactory, выдает - " Undefined type 'Illuminate\Database\Eloquen\Factories\HasFactory' ", при этом путь вверху указан. Полазил по интернету, так ничего и не нашел. Буду благодарен за помощь
Привет! А где ты прописываешь? то есть у тебя изначально этого не было?
@@laravelcreative да, изначально не было. В классе модели
@@МаксимКлимович-з4у когда прописываешь use HasFactory, подсвечивается желтым, что типа нет импорт? Уверен, что ругается именно на это use hasfactory, а не где-то еще?
@@laravelcreative Ругается конкретно на это, импорт есть.
@@МаксимКлимович-з4у сделай скрин;-)
Мне вообще Nothing to migrate пишет. прописал HasFactory, добавил protected model Post. Ноль результатов.
Ларавель 11