Laravel — двум пакетам требуется одинаковое имя таблицы

#laravel #package

#laravel #пакет

Вопрос:

В принципе, в Laravel5 я хочу использовать два пакета.Для простоты давайте назовем их package1 и package2.Два пакета выполняют совершенно разные действия.Один предназначен для аутентификации поста, т.Е. Должен ли пользователь иметь право управлять сообщением, комментарием или самим сайтом, другой — для системы чата

Когда я загрузил package1 (используя composer) и запустил php artisan migrate , он выполнил миграцию и создал таблицу с именем permissions .

Теперь, когда я пытаюсь перейти с package2, он выдает ошибку:

Base table or view already exists :1050 table разрешения already exists

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

Что мне делать?

Комментарии:

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

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

3. Если ни один из пакетов не позволяет вам настраивать имя таблицы, и ни один из авторов пакета не желает писать исправление, тогда вам нужно найти пакет для выполнения одного из двух.

4. Или вы можете разветвить один из пакетов. Если они были написаны хорошо, вам, возможно, придется только изменить имя таблицы при миграции и режиме.

5. или используйте php artisan migrate:fesh , который удалит все таблицы и запустит все миграции