Модель и описание миграции в 1 файле

StalkerClasses

Новичок
Просмотрел различные фреймворки...

Везде идет модель и отдельно файл миграции.
Есть ли фреймворки или можно ли в принципе описывать модель и миграцию в одном php файле?
 

WMix

герр M:)ller
Партнер клуба
Ты возможно не понял, миграция это не один файл, а один на каждую миграцию
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Где-то я подобный вопрос уже видел...
 

fixxxer

К.О.
Партнер клуба
@StalkerClasses, модель не имеет никакого отношения к базе данных. Модель - это от слова "моделировать". Модель самолета, модель пользователя, модель товара.

Этот момент нужно четко понимать. Модель - это просто код, который моделирует некоторую сущность. База данных тут никаким местом.

class User { ... } // модель пользователя, видишь, ни от чего не наследуется, можешь себе представить внутри обычный php-код безо всяких фреймворков
$user = new User(1, '[email protected]'); // экземпляр модели пользователя

А вот когда мы задумываемся о том, как сохранить этого $user в базу данных - вот тут база данных и появляется. Но это не сама модель. Это задача сохранения ее состояния на диск, отдельная. Задумались - появляется задача маппинга - как сопоставить свойства классов и поля в таблицах. Сделать это можно по-разному. Тут есть паттерны, самые известные - ActiveRecord (который добавляет реализацию маппинга прямо в модель) и DataMapper (маппинг находится снаружи, а модели остаются обычными php-классами).

Базы данных вообще может не быть. Можно написать сериализацию в файлы или какое-нибудь key-value хранилище. Модель никуда при этом не денется.

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

Так что твой вопрос - бессмысленный.

Вообще у меня дежавю, я тебе вроде это все писал уже в том или ином виде.
 
Последнее редактирование:
Сверху