All streams
Search
Write a publication
Pull to refresh
0
Send message

Так ведь мой подход позволяет совместить бизнес-модель и модель для миграций. К тому же обычные миграции обычно в отдельных файлах. В моем случае даже если использовать отдельный класс для таблицы, то это всегда будет один файл. Т.е. всё будет в одном месте. Хотя тут уже вопрос насколько это будет удобно для понимания когда миграций будет много.
Но тут как раз и помогут классы для документирования.

Мы берем вот такой класс
#[Comment('Таблица с изменениями')]
#[Migration('2011-11-11T12:00:00+03:00')]
#[Comment('Таблица для тестов изменений')]
class AllMigrations
{
    // Колонка
    #[Comment('Идентификатор')]
    protected ColumnId $id;
    // Колонка
    #[Migration('2012-12-12T12:00:00+03:00')]
    #[DefaultValue('Имя')]
    #[Migration('2013-12-14T12:00:00+03:00')]
    #[DefaultValue]
    #[Comment('Колонка с именем')]
    #[Migration('2017-12-12T12:00:00+03:00')]
    #[Name('Imj')]
    #[Migration('2018-12-12T12:00:00+03:00')]
    #[Type(ColumnBoolean::class)]
    #[Name('NAME')]
    #[Migration('2019-12-12T12:00:00+03:00')]
    #[MaxLength(2 ** 16)]
    protected ColumnString $name;
    // Колонка
    #[Migration('2015-12-12T12:00:00+03:00')]
    protected ColumnReal $rost;
    //
    #[Columns('id')]
    protected IndexPrimary $pkKey;
    // Индекс
    #[Columns('id')]
    #[Migration('2011-11-11T12:00:00+03:00')]
    #[Drop]
    #[Migration('2015-12-12T12:00:00+03:00')]
    #[Create]
    #[Columns('id', 'name')]
    #[Migration('2016-12-12T12:00:00+03:00')]
    #[Columns('id', 'rost')]
    protected IndexKey $testIdx;
}

и получаем такую картинку

и генерируем из него вот такую справочную информацию по которой всё достаточно понятно. Какая миграций за какой выполнялась и какой SQL код выполнялся.

Задача то как раз и была в совмещении модели и миграций в одной файле. И данный подход реализовался с прикидкой что это не модель, а просто класс для определения структуры таблицы. Т.е. я не планирую его использовать как модель, хотя этот вариант также возможен так как никаких ограничений на класс не накладывается. Т.е. его не нужно от чего то наследовать, он не должен содержать какие-то трейты. Это может быть абсолютно любой класс.

На самом деле twig (да и вообще все зависимости кроме shasoft/pdo) там только чтобы генерировать справку по сущностям в таком виде и справку по миграциям. Это я использовал для отладки. Скорее всего я это в дальнейшем в отдельный пакет выделю или в require-dev перенесу. Но для первой версии оставил "как есть".

Это миграции. А значит нельзя удалять то что было определено ранее. Иначе нарушится последовательность шагов.

сверхпроводник LK-99

Тут разве технологический провал? Тут просто фейк.

Всё сходится. У меня 355 роликов, их них только 3 имеют больше 10 тыс. просмотров. И таких как я большинство.

Судя по всему они как раз хотят провести исследование на тему влияния видеоигр на пользователей и получить за это много-много денег. Ну и чтобы запутать ещё предложения по поддержке индустрии

Можно и одежду использовать по прямому назначению и жить в квартире при +10. Но мне комфортнее босиком и в шортах по дому ходить.

У меня в коридоре теплый пол электрический так как плитка. Летом ложишься - кайф, прохладно. Зимой ложишься - кайф, тепло. Так что кайф круглый год.
Кота нет, есть собака. В неё ничего кидать не требуется. :)

Я чесслово не понимаю зачем тёплый пол в квартире.

Утром встаешь на работу и приятно идти по теплому полу, а не по холодному.

вас подрезали черед двойную сплошную на красный? он же запросто пропустит вас если вы проехали навстречу на кирпич и даже глазом не моргнет..

Грузин пролетает на красный, пассажир волнуется:

- Ты чего это на красный проехал?

- Я же джигит!

Едут дальше - зеленый светофор, грузин тормозит.

- А почему на зеленый остановился?

- А вдруг там другой джигит едет!

По факту продажи не было. Так и меня можно "уговорить" квартиру за 1 рубль продать

И чему ИИ может обучиться на публикациях в СМИ? Как делать качественные фейки?

С самого начала говорили что экономически невыгоден этот вид транспорта. По итогу к этому и пришли.

И получить премию в виде "спасибо за работу".

Я на работу хожу чтобы деньги получать.

Поставил себе цель - больше денег получать на год. Если ЗП не подняли, то, как следствие, ещё и премию снимут за невыполнение целей.

Может для меня амбициозная цель, добавить поле в базу данных...

А потом открываешь таблицу БД, а там поля вида f1...f1000 и ты понимаешь что видишь 1000 реализованных амбициозных целей.

Зарабатывайте много а не мало

Предположим ЗП меняется в зависимости от того что ты пишешь баг правишь или фичу прикручиваешь. И если за баг платят меньше, то возникает вопрос: зачем его править? Пишешь фичи и всё.

p.s.хм, мне кажется я понял почему некоторые баги по 100500 лет не исправляют

Преобразование String в Number 

Преобразование значения в Boolean 

Быстрое преобразование Float в Integer 

Всё-таки в коде лучше использовать функции которые понятны. Когда потом это всё будет минимизироваться, вот там уже пусть преобразовывает во что-то другое. Но для разработчика чем понятнее код тем лучше.

Information

Rating
Does not participate
Location
Волжский (Волгоградская обл.), Волгоградская обл., Россия
Works in
Registered
Activity

Specialization

ERP Developer, SAP-разработчик
Middle
From 1,000,000 ₽
ABAP
C++
C
PHP
Laravel
JavaScript
Web development