Witam,
mam dwie encje (dla uproszczenia wyciete rzeczy zbedne)
[PHP]class Page
{
[...]
/**
* @ORM\OneToOne(targetEntity="Detail", mappedBy="page",cascade={"all"})
**/
private $detail;
[...]
public function setDetail(\Nede\MainBundle\Entity\Detail $detail = null)
{
$this->detail = $detail;
$detail->setPage($this);
return $this;
}
[/php]
class Detail
{
private $opis;
/**
* @ORM\OneToOne(targetEntity="Page", inversedBy="detail")
* @ORM\JoinColumn(name="page_id", referencedColumnName="id")
**/
private $page;
public function setPage(\Nede\MainBundle\Entity\Page $page = null)
{
$this->page = $page;
return $this;
}
}
Tabele wygladaja w nastepujacy sposob:
CREATE TABLE Detail (id INT AUTO_INCREMENT NOT NULL, page_id INT DEFAULT NULL, opis VARCHAR(255) NOT NULL, UNIQUE INDEX UNIQ_29AA7AA5C4663E4 (page_id), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci ENGINE = InnoDB;
CREATE TABLE Page (id INT AUTO_INCREMENT NOT NULL, name VARCHAR(255) NOT NULL, PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci ENGINE = InnoDB;
ALTER TABLE Detail ADD CONSTRAINT FK_29AA7AA5C4663E4 FOREIGN KEY (page_id) REFERENCES Page (id);
W formularzu mam:
PageType
public function buildForm
(FormBuilderInterface
$builder, array $options) {
$builder
->add('name')
->add('detail',new DetailType())
;
}
Teraz dochodzac do sedna. Wszystko tak jak jest napisane dziala z jednym wyjatkiem...
Kiedy dane dla klasy Page i Detail sa uzupelnione wszystko dziala... ALE kiedy uzupelniam tylko tabele Page, bez Detail to pojawia sie blad z Insertem
czyli :
An exception occurred while executing 'INSERT INTO Detail (opis, page_id) VALUES (?, ?)' with params {"1":null,"2":null}:Oczywiscie blad jest dla mnie zrozumialy, pytanie tylko JAK ZROBIC, zeby takie polecenie nigdy sie nie wykonywalo jesli w formularzu nie ma dla niego uzupelnionych danych ?