Doctrine2 — Наследование одной таблицы

Я пытаюсь применить это руководство к моему проекту, но оно у меня не работает. Каждый раз, когда я пытаюсь обновить свою схему, я получаю сообщение об ошибке: Неустранимая ошибка: невозможно повторно объявить класс Rueckgrat\App\Models\ProjectSetting в.....

У меня есть 2 файла. Первый — это ProjectSetting.php.

namespace Rueckgrat\App\Models;

use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\ORM\Mapping AS ORM;

/**
 * @ORM\Entity()
 * @ORM\Table(name="project_setting")
 * @ORM\HasLifecycleCallbacks()
 * @ORM\InheritanceType("SINGLE_TABLE")
 * @ORM\DiscriminatorColumn(name="is_production", type="integer")
 * @ORM\DiscriminatorMap({"0" = "ProjectCalculation", "1" = "ProjectSetting"})
 */
class ProjectSetting
{
// More code here
}

Второй — ProjectCalculation.php.

namespace Rueckgrat\App\Models;
use Doctrine\ORM\Mapping AS ORM;
/**
 * @ORM\Entity
 */
class ProjectCalculation extends \Rueckgrat\App\Models\ProjectSetting
{      
....
}

Любая помощь или подсказка приветствуются.

Обновление:

Полное сообщение об ошибке: Неустранимая ошибка: невозможно повторно объявить класс Rueckgrat\App\Models\ProjectSetting в /Applications/MAMP/htdocs/Rueckgrat/app/models/ProjectSetting.php в строке 17.

Я только что попробовал пример из документации Doctrine, просто разделенный на два файла сущностей, и он не работает. Затем я скопировал класс ProjectCalculation в файл ProjectSetting, и он работает.

Обновление 2:

Я не могу обновить свою схему, но она сохраняет правильный дискриминатор в таблице project_setting, когда я сохраняю объект ProjectCalculation.


person Abenil    schedule 02.11.2011    source источник
comment
Сообщение об ошибке, возможно, очень важно, пожалуйста, не обрезайте его.   -  person greg0ire    schedule 02.11.2011
comment
Неустранимая ошибка: невозможно повторно объявить класс Rueckgrat\App\Models\ProjectSetting в /Applications/MAMP/htdocs/Rueckgrat/app/models/ProjectSetting.php в строке 17.   -  person Abenil    schedule 02.11.2011
comment
Вы можете найти class ProjectSetting в любом другом файле? Второй вариант в объявлении DiscriminatorMap выглядит подозрительно.   -  person greg0ire    schedule 02.11.2011
comment
нет, нет двойного объявления класса ProjectSetting. Что вы имеете в виду под подозрительным? Это как в документации, или?!   -  person Abenil    schedule 02.11.2011
comment
Плохо, я думал, что для материнского класса не должно быть вариантов, но, очевидно, вы можете это сделать.   -  person greg0ire    schedule 02.11.2011
comment
Вы уверены, что определение класса ProjectCalculation правильное: класс ProjectCalculation расширяет \Rueckgrat\App\Models\ProjectSetting. Разве это не должно быть просто классом ProjectCalculation, расширяющим ProjectSetting. Конечно, перед этим вы должны ввести use \Rueckgrat\App\Models\ProjectSetting;   -  person ab_dev86    schedule 02.11.2011
comment
не имеет значения, как вы объявляете класс. и я получаю ту же ошибку, когда я делаю это, как вы сказали.   -  person Abenil    schedule 02.11.2011


Ответы (1)


Это может быть проблема с ускорителем PHP на вашем компьютере. Пожалуйста, отключите APC или XCache (что там у вас есть), перезапустите PHP/Apache и повторите попытку.

person Vladislav Rastrusny    schedule 18.11.2011
comment
спасибо, я попробую это, но я обнаружил, что скрипт cli вызывает много проблем. если я генерирую свои объекты, прокси и базу данных через php, это работает. только когда я делаю это через CLI, я получаю эти ошибки. - person Abenil; 18.11.2011