Symfony 2 + Doctrine 2 + наследование

Я ищу решение следующей проблемы с наследованием базы данных с использованием Doctrine 2, встроенной в фреймворк Symfony 2. Вот что я хочу сделать...

enter image description here

Я хочу создать две таблицы (UredniHodiny, KonzultacniHodiny )с тем же интерфейсом, что и абстрактный класс Hodiny. Вот как я пытаюсь это сделать

<?php

// src/CvutPWT/ImportBundle/Entity/Hodiny.php
namespace CvutPWT\ImportBundle\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
 * @ORM\MappedSuperclass
 */
abstract class Hodiny
{

    /**
     * @ORM\Id
     * @ORM\Column(type="integer")
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    protected $id;

    /**
     * @ORM\ManyToOne(targetEntity="Osoba")
     */
    protected $osoba;

    /**
     * @ORM\ManyToOne(targetEntity="Mistnost")
     */
    protected $mistnost;

    /**
     * @ORM\Column(type="datetime")
     */
    protected $zacatek;

    /**
     * @ORM\Column(type="datetime")
     */
    protected $konec;

}


<?php

// src/CvutPWT/ImportBundle/Entity/KonzultacniHodiny.php
namespace CvutPWT\ImportBundle\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
 * @ORM\Entity
 * @ORM\Table(name="konzultacnihodiny")
 */
class KonzultacniHodiny extends Hodiny 
{

}

<?php

// src/CvutPWT/ImportBundle/Entity/UredniHodiny.php
namespace CvutPWT\ImportBundle\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
 * @ORM\Entity
 * @ORM\Table(name="urednihodiny")
 */
class UredniHodiny extends Hodiny 
{

}

Теперь, когда я запускаю php app/console doctrine:generate:entities CvutPWTImportBundleSymfony генерирует все переменные (точнее столбцы )из класса Hodiny как частные переменные для обоих дочерних классов. Теперь, когда я пытаюсь создать эти таблицы с помощью app/console doctrine:schema:update --force, я получаю сообщения об ошибках $id must be protected or weaker. Когда я меняю эту защиту вручную, я могу создавать таблицы, но есть только один столбец (id ). Но это не то, на что я надеялся. Может кто-нибудь дать мне совет, что я делаю неправильно?

6
задан j0k 4 October 2012 в 21:01
поделиться