Laravel и дизайн базы данных

Я задал этот вопрос на Reddit, но не получил ответа. Я подумал, что попробую здесь вместо этого.

Я новичок в Laravel, просматривал документацию, а также смотрел видео Джеффри Уэй NetTuts. Однако я еще не влез в это слишком глубоко, поэтому, если на этот вопрос дан четкий ответ где-то еще, пожалуйста, просто укажите мне в этом направлении.

У меня есть опыт работы с CodeIgniter, и для всех проектов, которые я делал с ним, я обычно разрабатываю свои базы данных в MySQL Workbench. Я также использую это для внесения изменений в схему, а также как визуальную карту базы данных. Файл MySQL Workbench обычно передается другим разработчикам через Git.

Кажется, Laravel хочет, чтобы вы создавали свои таблицы с помощью миграций, что кажется немного противоречащим интуиции со стороны MySQL Workbench. Я понимаю, что миграции действуют как контроль версий для базы данных, что кажется довольно приятным. Однако в остальном я еще не совсем понял суть.

Может ли кто-нибудь объяснить мне, почему я должен создавать таблицы с помощью функции миграции Laravel по сравнению с тем, как я это делал?


person Bert S    schedule 23.06.2013    source источник
comment
(В общем, если вы отправляете перекрестную публикацию, укажите ссылку на другой вопрос. Это позволяет читателям проверить, получили ли вы ответ в другом месте, прежде чем тратить время на ответ. Спасибо!)   -  person halfer    schedule 23.06.2013
comment
Взгляните на это: laravelsd.com Я использую его для создания своих миграций.   -  person Mick    schedule 05.04.2017


Ответы (3)


Laravel - это PHP-фреймворк. Как и в случае с другими фреймворками, такими как Zend, время от разработки до развертывания будет значительно сокращено, равно как и разработка в рамках, понятных другим разработчикам, по мере того, как ваши проекты становятся крупнее и вам потребуется больше разработчиков, вовлеченных в будущее.

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

person Noqomo    schedule 23.06.2013
comment
Спасибо, в этом немного больше смысла. - person Bert S; 23.06.2013

Что ж, это серьезная проблема. Хотя Laravel специально не заставляет вас использовать его, я могу придумать несколько причин для его реализации:

  1. Совместимость. Работает практически с любой базой данных. Если вы когда-нибудь решите перейти с MySQL на PostgreSQL, мало что изменится.
  2. Контроль версий. Как вы сами упомянули, он позволяет вам контролировать то, что изменяется в вашей базе данных, и предоставляет быстрый и простой способ обновить вашу уже работающую базу данных.
  3. Простота использования. Вызвать его из командной строки невероятно просто. Это означает, что у вас не возникнет проблем с созданием базы данных на стороне сервера через оболочку.
person rmobis    schedule 23.06.2013

Основная причина, по которой в Laravel есть миграции, - это контроль версий. Когда вы создаете миграцию, к имени прикрепляется дата. Я сам использую Laravel и очень люблю миграции. В сочетании с построителем схем я намного упростил мне жизнь, не используя древние методы MySQL. Вот несколько примеров схемы и миграции

Простая команда для создания нового файла миграции:

php artisan migrate:make create_users_table

Внутри файла миграции таблицы пользователей:

Schema::create('users', function($table){
     $table->increments('id'); [will create a increments field with name of ID]
     $table->string('username'); [string field with name of username]
     $table->string('password'); [password is a special  field] 
     $table->text('body'); [string field with name of username]
}); 

Внизу все, что вам нужно добавить:

Schema::drop('users');

Затем вы запускаете команду миграции:

php artisan migrate

Он добавит все столбцы в таблицу.

если вы когда-нибудь захотите вернуть или добавить в базу данных, все, что вам нужно сделать, это запустить это

php artisan migrate:rollback

[вы можете добавить здесь определенные команды только для отката определенных таблиц]

person Gravity    schedule 28.02.2016