Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [SF][Symfony2], Relacja 1:1
arturo23
post
Post #1





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 13.02.2012

Ostrzeżenie: (0%)
-----


Witam,

mam dwie encje (dla uproszczenia wyciete rzeczy zbedne)

  1. [PHP]class Page
  2. {
  3. [...]
  4. /**
  5. * @ORM\OneToOne(targetEntity="Detail", mappedBy="page",cascade={"all"})
  6. **/
  7. private $detail;
  8.  
  9. [...]
  10. public function setDetail(\Nede\MainBundle\Entity\Detail $detail = null)
  11. {
  12. $this->detail = $detail;
  13. $detail->setPage($this);
  14. return $this;
  15. }
[/php]

  1. class Detail
  2. {
  3. private $opis;
  4.  
  5. /**
  6. * @ORM\OneToOne(targetEntity="Page", inversedBy="detail")
  7. * @ORM\JoinColumn(name="page_id", referencedColumnName="id")
  8. **/
  9. private $page;
  10.  
  11. public function setPage(\Nede\MainBundle\Entity\Page $page = null)
  12. {
  13. $this->page = $page;
  14.  
  15. return $this;
  16. }
  17.  
  18. }


Tabele wygladaja w nastepujacy sposob:
  1. 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;
  2.  
  3. 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;
  4. ALTER TABLE Detail ADD CONSTRAINT FK_29AA7AA5C4663E4 FOREIGN KEY (page_id) REFERENCES Page (id);


W formularzu mam:
  1. PageType
  2.  
  3. public function buildForm(FormBuilderInterface $builder, array $options)
  4. {
  5. $builder
  6. ->add('name')
  7. ->add('detail',new DetailType())
  8. ;
  9. }


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 ?

Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 1)
ano
post
Post #2





Grupa: Zarejestrowani
Postów: 435
Pomógł: 40
Dołączył: 16.02.2003
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


Wystarczy dodać walidację:

W Page.detail reguły:
- NotBlank/NotNull
- Valid - !koniecznie! zapewnienie, żeby obiekt Detail był "poprawny"

  1. class Page
  2. {. // np. Tutaj adnotacjami @Valid, @NotBlank
  3. private $detail;


W Detail.opis:
- NotBlank

Detail.page:
- NotBlank/NotNull.

  1. class Detail
  2. {
  3. /** @NotBlank **/
  4. private $opis; // itd
  5. }


To Ci powinno pomóc: http://symfony.com/doc/current/book/validation.html

Ten post edytował ano 7.10.2012, 12:56:08


--------------------
Linkedin | ...
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 16:19