Автор Тема: Контрол на версията  (Прочетена 1368 пъти)

0 Потребители и 1 Гост преглежда(т) тази тема.

Exword

  • Newbie
  • *
  • Благодарности
  • -Казани: 2
  • -Получени: 0
  • Публикации: 30
Контрол на версията
« -: 30 Май 2015, 11:41:01 »
Решил съм да добавя нова функционалност към сайт което естествено налага промяна в структурата на базата данни.
Има ли начин да запазя връзките между новата и старата база данни, така че когато завърша  променете на локалният хост и реша да кача новият скрипт да мога да прехвърля натрупалите се нови записи от старата база данни в новата.


ПП.Решил съм да ползвам Laravel 5  който има функция migrate но не намирам начин да я използвам за вече съществуваща база данни.




Давай наставления само на този, който търси знания, след като е открил своето невежество.

Avalanche

  • Administrator
  • Hero Member
  • *****
  • Благодарности
  • -Казани: 65
  • -Получени: 275
  • Публикации: 2602
  • meow
Re: Контрол на версията
« Отговор #1 -: 30 Май 2015, 14:15:55 »
Здрасти,

миграциите на Ларавел ти позволяват да изпълняваш определени промени по структурата на базата данни. Просто описваш в един файл какви да са промените и командата ги изпълнява, реално може да напишеш миграция, която добавя само едно поле в определена таблица. Миграциите не ги интересуват дали базата данни съществува или не. За примери може да разгледаш миграциите за нашия сайт, разделени са по папки, понеже трябва да се изпълняват в определен ред. Все пак мисля че това което търсиш се нарича seed - процесът на добавяне на нови записи. В същото хранилище може да намериш примери и за това.
"Компютрите не правят каквото искаме, а каквото им кажем." Ако разбереш какво значи това няма да имаш големи проблеми, нито с никоя ОС, нито език, или софтуер.
Аз не съм програмист между другото!

Exword

  • Newbie
  • *
  • Благодарности
  • -Казани: 2
  • -Получени: 0
  • Публикации: 30
Re: Контрол на версията
« Отговор #2 -: 30 Май 2015, 17:06:15 »
Може и с seed  да стане. Ще потърся  още варианти докато още на съм почнал да изграждам структурата (все още разучавам laravel 5 ) .
Ако не намеря нещо подходящо ще го направя по единственият начин за който се сещам, а именно ще напиша един прост .sql файл
с новата структурата на схемата  с  Dumping data  спрямо новата схема, доста дървен метод с опасност да се счупят доста неща, дано открия някое по елегантно решение.
« Последна редакция: 30 Май 2015, 17:16:49 от Exword »
Давай наставления само на този, който търси знания, след като е открил своето невежество.

Avalanche

  • Administrator
  • Hero Member
  • *****
  • Благодарности
  • -Казани: 65
  • -Получени: 275
  • Публикации: 2602
  • meow
Re: Контрол на версията
« Отговор #3 -: 30 Май 2015, 18:17:13 »
Това е начина, няма какво да се чудиш и притесняваш. Просто трябва да видиш API-то на Laravel как точно да си генерираш таблиците (това е еквивалента на да пишеш .sql файл). Ето вземи примера с таблицата за видеата. Тази миграция е еквивалента на това да имаш следния sql файл:
Код: MySQL
  1. CREATE TABLE IF NOT EXISTS `videos` (
  2.   `content_id` int(10) unsigned DEFAULT NULL,
  3.   `user_id` int(10) unsigned NOT NULL,
  4.   `name` varchar(255) NOT NULL,
  5.   `legacy` tinyint(4) NOT NULL,
  6.   `created_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
  7.   `updated_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
  8.   PRIMARY KEY (`id`),
  9.   KEY `videos_content_id_index` (`content_id`),
  10.   KEY `videos_user_id_index` (`user_id`)
  11. );

След това си експортираш записите през phpMyAdmin като PHP масив, който да може да сийднеш. Пак примера с таблицата за видеата, това ще изчисти свички записи, ще прочете файла /app/database/seed/data/videos.php и ще налее съдържанието му в базата данни. Ето пример как трябва да изглежда един файл за сийд:
Код: PHP
  1. <?php
  2. /**
  3.  * Export to PHP Array plugin for PHPMyAdmin
  4.  * @version 0.2b
  5.  */
  6.  
  7. //
  8. // Database ``
  9. //
  10.  
  11. return array(
  12.     array('id' => '1', 'content_id' => '5', 'user_id' => '1', 'name' => 'име', 'legacy' => 1, 'created_at' => '2015-05-30 18:13:18', 'updated_at' => '2015-05-30 18:20:00'),
  13.     array('id' => '1', 'content_id' => '885', 'user_id' => '181', 'name' => 'име', 'legacy' => 1, 'created_at' => '2015-05-30 18:13:41', 'updated_at' => '2015-05-30 18:20:10'),
  14. );
  15.  
"Компютрите не правят каквото искаме, а каквото им кажем." Ако разбереш какво значи това няма да имаш големи проблеми, нито с никоя ОС, нито език, или софтуер.
Аз не съм програмист между другото!