Size: a a a

Laravel для начинающих

2021 June 29

SG

Sergey Gerasimov in Laravel для начинающих
Да делай сидер, не слушай ты их
источник

J

JUSTasuffer in Laravel для начинающих
источник

SG

Sergey Gerasimov in Laravel для начинающих
Сидер это не только тестовые, но и начальные данные
источник

AH

Andrey Helldar in Laravel для начинающих
Это сидеры на проде :)
источник

VH

Vlad Horpynych in Laravel для начинающих
источник

AH

Andrey Helldar in Laravel для начинающих
А знаешь почему? А потому что в Ларе "из коробки" не было альтернатив, ведь, далеко не каждый догадывался создавать консольную команду для этого. Да и сами консольные команды - такая себе идея при вызове деплоя.
источник

ПЛ

Павел Ланчев... in Laravel для начинающих
а помимо "фу некрасиво" есть аргументы против сидеров в качестве заполнения первоначальными данными?
источник

SG

Sergey Gerasimov in Laravel для начинающих
Так твой пакет это та же самая консольная команда...
источник

SG

Sergey Gerasimov in Laravel для начинающих
А ещё порядок как гарантируется?
источник

SG

Sergey Gerasimov in Laravel для начинающих
Например, мне в таблицу добавить not null поле
источник

AH

Andrey Helldar in Laravel для начинающих
Вообще нет
источник

AH

Andrey Helldar in Laravel для начинающих
Как порядок гарантируется в миграциях?

И глянь строчку https://github.com/andrey-helldar/laravel-actions/blob/main/src/Support/Actionable.php#L9 :)
источник

SG

Sergey Gerasimov in Laravel для начинающих
Ну поле добавляю миграцией, потом вызываю твой экшен, и продолжаю миграции?
источник

ИБ

Игорь Бабаев... in Laravel для начинающих
А можно, пожалуйста, пример кода или информацию, где найти?

А то что-то не получилось разобраться
источник

SS

Serg Serdyuk in Laravel для начинающих
в смысле? пример чего? модели?🌚
источник

ИБ

Игорь Бабаев... in Laravel для начинающих
Как в базу записать строку и сразу ее получить в переменную
источник

SS

Serg Serdyuk in Laravel для начинающих
Эм... создать модель, задать у нее свойство $fillable с нужными полями и дальше через ::create() создать запись...
https://laravel.su/docs/8.x/eloquent тут вроде неплохо написано
источник

AH

Andrey Helldar in Laravel для начинающих
1. Сидеры вызывают фабрики для заполнения БД данными для теста.

2. Вызывать при деплое команду php artisan db:seed --force плохая идея - в основной файл могут быть вписан вызов сидов, которых там быть не должно.

3. Можно легко ошибиться и засунуть на прод данные, которых там быть не должно.

4. Условно нужно создать новый сид и добавить из него данные на прод - а техлид или девопс откажутся изменять конфиг сервера в CI или тупо забьют, а код выгрузят.


Какие преимущества даёт пакет Laravel Actions:

1. Система вызова а-ля миграции;
2. Версионирование;
3. Сохранение состояния - вызываются один раз (или вызов при каждом деплое в зависимости от значения переменной);
4. Можно указать для каких имён окружений (environment) запускать или пропускать запуск;
5. Можно использовать транзакции путём установки переменной;
6. Не требуется вмешательство техлида и/или девопса при добавлении новой "выгрузки";
7. Работа с данными и файлами из правильного места.
источник

AH

Andrey Helldar in Laravel для начинающих
Конечно, можно извратиться и написать нечто вроде

php artisan migrate --force --path=2021_06_29_140227_foo_table
php artisan migrate:actions --force
php artisan migrate --force --path=2021_06_29_140231_bar_table


Но вообще порядок команд при деплое:

php artisan migrate --force
php artisan migrate:actions --force
источник

AH

Andrey Helldar in Laravel для начинающих
$post = Post::create(['title' => 'Foo']);

return $post->id;
источник