Тема: Миграции
Собственно вопрос. Как делаются миграции вашим фреймворком (бд)?
-- Прошу извинить, не в ту ветку запостил
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Собственно вопрос. Как делаются миграции вашим фреймворком (бд)?
-- Прошу извинить, не в ту ветку запостил
Для переноса данных с другого магазина, можно воспользоваться внешними инструментами, доступными в админ. панели (CSV). Если вы хотите произвести перенос данных на низком уровне (БД), то вам необходимо написать скрипт переноса данных. В фреймворке ReadyScript есть 2 уровня, на котором можно работать со вставками - БД:
1. Это уровень SQL запросов - класс \RS\Db\Adapter
\RS\Db\Adapter::sqlExec("INSERT INTO table(a,b) VALUES('#a', '#b')", array('a' => 'значение А', 'b' => 'значение B'));
2. Это уровень ORM объектов.(рекомендуемый уровень). в данном случае вы будете оперировать понятием объект.
Например, если необходимо вставить товар, то вставка должна происходить так:
$product = new \Catalog\Model\Orm\Product;
$product['title'] = 'Название товара';
$product['alias'] = 'URL имя товара';
$product['xdir'] = array('ID категории', 'ID другой категории, если нужно');
$product['xcost'] = array(
'ID типа цен' => 'Цена',
'ID типа цен2' => 'Цена2'
);
$product['maindir'] = 'ID главной категории';
//...
if ($product->insert()) {
//Товар добавлен, ID товара - $product['id'];
}
А как насчет структуры таблиц? Например мне на локале надо написать доп. модуль. Я вношу изменения в таблицу например ****_products, как мне эти изменения перенести на глобал? Можно сделать SQL запросами, но думаю на уровне Orm будет лучше. Присутствует ли в RS такой функционал и как его использовать?
Да, для данной задачи в ReadyScript есть уникальное решение. Разработчику - никогда не нужно лезть в базу, чтобы добавлять или обновлять какие-либо поля в базе.
Вы просто изменяете описание Orm объектов.
Например с помощью обработки необходимого события в вашем модуле
http://readyscript.ru/dev-manual/dev_or … orm_events
Потом заходите в раздел Веб-сайт->Настройка модулей. Выбираете ваш модуль и нажимаете "Переустановить модуль". Установщик сам найдет все ORM объекты модуля и приведет структуру БД в соответствие с описанием ORM объекта.
То есть для синхронизации локальной версии сайта и удаленного сайта,
нужно просто перекинуть файл с классом ORM объекта, например product.inc.php на боевой сервер и "Переустановить модуль", описанным выше образом.
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться