![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 30 Pomógł: 0 Dołączył: 8.11.2005 Skąd: Zabrze Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Mam mały problem z zapisem dwóch obiektów przy założeniu, że obiekt2 ma korzystać z id właśnie dodanego obiektu1. Mam tak:
Teraz tak. Jak zrobię em->flush() przed deklaracją Klasy2 (oraz zakomentuje linie z $inst) to obiekt zapisuje poprawnie i redirectuje mnie na stronę, która w adresie ma $entity->getId() Moje pytanie brzmi jak wyciągnąc to id przed flushem (próbowałem dwa flushe, również nei działa), żeby Klasa2 miała zapisany w sobie id Klasy1. Błąd dostaję z MySQLa, że wartośc id Klasy 2 nie może być null (takie mam wymaganie, dlatego chciałem ręcznie przypisać to id przed zapisem) Z góry dzięki! -- UPDATE, rozwiązanie częściowe -- Zamiast zapisywać samo id od klasy1, można do klasy2 przekazać cały obiekt klasy1 (trzeba odpowiednie pola dodać oczywiście do Entity) - ALE! - jest to tylko częściowe rozwiązanie i niejako pisanie/przekazywanie podwójne, bo samo skoro generator entity tworzy nam setery/getery, to teoretycznie powinno się dać dodać obiekt niezależnie od innego obiektu wyłącznie z ustawianiem odpowiednich setów. Jeżeli znacie lepsze rozwiązanie - podzielcie się ![]() Ten post edytował adalgrim 23.06.2012, 13:26:42 |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Cytat Zamiast zapisywać samo id od klasy1, można do klasy2 przekazać cały obiekt klasy1 [...] To jest jedyne poprawne rozwiązanie. Jeżeli generator wygenerował Ci powyższy kod, musiałeś źle bazę zaprojektować - być może zapomniałeś dodać kluczy obcych?1. Obiekt klasy Klasa1 powinien mieć zdefiniowaną relację jeden-do-wielu, bądź jeden-do-jeden z obiektem klasy Klasa2. 2. W relacji ustaw by obiekty relacji również były zapisywane w bazie danych (cascade = {'persist'}) - http://docs.doctrine-project.org/projects/...cade-operations |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 30 Pomógł: 0 Dołączył: 8.11.2005 Skąd: Zabrze Ostrzeżenie: (0%) ![]() ![]() |
Baza jest okej, klucze na pewno też, kod nie był generowany automatycznie. Chodziło mi tylko o problem zapisu - dość logiczne wydawało się, że wystarczy samo ID skoro tylko ID mnie interesowało. Jeśli jednak zawsze trzeba zapisywać cały obiekt - to ok, przyjmuję do wiadomości.
Tak czy owak dzięki za rozwiązanie wątpliwości! Temat do zamknięcia. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 19.08.2025 - 16:14 |