Symfony 2 çerçevesinde yerleşik Doctrine 2'yi kullanarak bir veritabanı devralma ile ilgili aşağıdaki sorun için bir çözüm arıyorum. Bu Symfony 2 + Doktrin 2 + kalıtım
soyut sınıfın hodiny aynı arayüzü ile iki tablo (UredniHodiny, KonzultacniHodiny) oluşturmak istiyorum ... Yapmak istediğim şeydir. Bu benimphp app/console doctrine:generate:entities CvutPWTImportBundle
Symfony'nin hem çocuk sınıflarına özel değişkenler olarak sınıf hodiny tüm değişkenleri (daha doğrusu sütunlar) üretir çalıştırdığınızda ben şimdi o
<?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
{
}
yapmaya çalışıyorum nasıl. Şimdi bu tabloları app/console doctrine:schema:update --force
ile oluşturmaya çalışırken $id must be protected or weaker
hatalarını alıyorum. Bu korumayı el ile değiştirdiğimde tablo oluşturabilirim ancak yalnızca bir sütun (id) var. Ama bu umduğum gibi değil. Birisi bana yanlış yaptığım şey hakkında tavsiyede bulunabilir mi?
Hey, bu benim için beklendiği gibi çalışıyor. Ben 'konzultacnihodiny' ve her ikisi de 5 alan içeren 'urednihodiny' adlı bir tablo adında bir tablo alıyorum. Not Aynı zamanda Hodiny ana sınıfında şu anda FK'ler olduğundan iki tane daha varlık eklemem gerekiyordu. Ayrıca, kullanmak istediğiniz [miras tipi] (http://docs.doctrine-project.org/projects/doctrine-orm/en/2.0.x/reference/inheritance-mapping.html) belgesini de doğrulamanız gerekir. Birden fazla olduğu gibi. – Shane