Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Symfony2: объект воссоздан после переименования

Автор вопроса: B33th0v3nОтветов: 2

Я создал пакет Super и создал относительную сущность "sin_table1.php" как генерацию таблицы mysql "sin_table1".

После:

 php app/console doctrine:generate:entities AcmeSuperBundle

а также

  php app/console doctrine:schema:update --force

Теперь я вижу полную сгенерированную таблицу mysql.

Но если я переименую sin_table1.php в другое имя как "mysql_schema.php" и попытаюсь перезагрузить эти команды, doctrine/symfony2 воссоздает файл Entity "sin_table1.php".

Я попытался найти ключ "sin_table1" в корневом проекте symfony2, но ничего не нашел. Только кеши, журналы и два файла Entitiy (sin_table1.php и mysql_schema.php).

Я пытался очистить кеш, но ничего не произошло, всегда заново создается sin_table1.php и конфликтует с mysql_schema.php, потому что есть двойное декарирование одного и того же класса.

Как я могу это решить? где в доктрине сохранена конфигурация объекта sin_table1? почему это происходит?

я думаю, что я потерял что-то, читая руководство....

  • Можете ли вы добавить больше кода, пожалуйста? Ваша сущность использует аннотацию? Возможно, у вас есть @Table(name=sin_table1). Debflav 18.03.2014
  • Это мои первые эксперименты с symfony и доктриной, и после очередного теста я думаю, что имя файла должно совпадать с содержащимся в нем классом. Это моя гипотеза/предположение, но я не уверен. B33th0v3n 18.03.2014

phpsymfonyentitydoctrine-orm

Ответы

Ответ 1 · B33th0v3n

Файл имени: mysql_schema.php

namespace Acme\SuperBundle\Entity;`
 use Doctrine\ORM\Mapping as ORM;`
    /**`
     * @ORM\Entity`
     * @ORM\Table(name="sin_table1")`
     */`
    class sin_table1`
    {....`

В моем новом тесте я переименовал класс как "sin_tablerrrrrrrrrr", а также @ORM\Table(name="sin_tablerrrrrrrrrr"....

и результатом будет другой созданный файл sin_tablerrrrrrrrrr.php

Если мое предположение, что файл имен должен быть таким же, как у класса, я мог бы быть подписан как решенный.

Ответ 2 · Debflav

  • Я всегда устанавливал имя своего класса, идентичное имени моего файла php. Я предполагаю, что это скорее соглашение/лучшая практика разработчиков, чем обязательство.

  • Во всяком случае, несколько недель назад у меня возникла та же проблема, и я увидел, что команда php app/console doctrine:schema:drop не удаляет переименованную таблицу. Таблица со старым именем не была удалена командой. Поэтому, когда я обновился, у меня были обе таблицы. Возможно, это была твоя проблема.

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы