Symfony 2 프레임 워크에 내장 된 Doctrine 2를 사용하여 데이터베이스 상속과 관련된 다음 문제에 대한 해결책을 찾고 있습니다. 이 Symfony 2 + Doctrine 2 + 상속
내가 추상 클래스 Hodiny와 같은 인터페이스로 두 테이블 (UredniHodiny, KonzultacniHodiny)를 만들려면 ... 내가하고 싶은 것입니다. 이것은 내가php app/console doctrine:generate:entities CvutPWTImportBundle
심포니 두 자식 클래스에 private 변수로 클래스 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
{
}
을 할 노력하고있어 방법이다. 이제 app/console doctrine:schema:update --force
으로 테이블을 만들려고하는데 나는 그 오류가 발생했습니다 $id must be protected or weaker
. 이 보호를 수동으로 변경하면 테이블을 만들 수 있지만 단 하나의 열 (ID) 만 있습니다. 그러나 이것은 내가 바라는 것이 아닙니다. 누군가 내가 뭘 잘못했는지 조언 해 줄 수 있니?
안녕하세요, 이것은 예상대로 작동합니다. 나는'konzultacnihodiny'라는 테이블과'urednihodiny'라는 테이블을 얻습니다.이 테이블은 모두 5 개의 필드를 포함합니다. 참고 Hodiny 기본 클래스에서 현재 FK이므로 두 개의 다른 엔터티도 추가해야했습니다. 사용하려는 [상속 유형] (http://docs.doctrine-project.org/projects/doctrine-orm/en/2.0.x/reference/inheritance-mapping.html)도 확인해야합니다. 하나 이상이 있기 때문에. – Shane