Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [SF2][Symfony2][doctrine]
Forum PHP.pl > Forum > PHP > Frameworki
robert0770
Cześć,

Czy można w jakiś sposób zrobić 2 instancje ten samej encji?

np

  1. $entity = $repository->find(1);
  2.  
  3. $entity->setCosTam();
  4.  
  5. $entity2 = $repository->find(1);
  6.  
  7. no i w tym momencie entity == entity2


ale chciałbym żeby entity2 było "aktualniejsze", to znaczy bardziej odwzorowywało aktualny stan bazy

  1. em->detach($entity)


nie załatwia sprawy bo w kodzie mam błędy związane z kaskadowym przetwarzaniem

chciałbym żeby referencja do
  1. $entity
została pominięta i został stworzony prawdziwy nowy obiekt

da rade?

ps

  1. em->refresh($entity2)

odświeża zarówno entity jak i entity2
ohm
Jeśli chcesz mieć identyczne obiekty, to clone, ale nie będą to te same obiekty w bazie. Zależy co chcesz jeszcze zrobić, bo możesz jeszcze przez subscribera wyciągnąć różnice między starym a nowym obiektem, ale to w przypadku jeśli robisz update.
Crozin
A możesz napisać co chciałbyś dzięki temu osiągnąć? Bo odnoszę wrażenie, że to nie jest najlepsze rozwiązanie problemu jaki masz.
Pilsener
Czasami zachodzi potrzeba np. skopiowania encji bo chcemy dać userowi możliwość napisania artykułu na bazie już istniejącego.

Mój post:
http://forum.php.pl/index.php?showtopic=25...t&p=1206711

Nie ma innej drogi, jak ręczne ogarnięcie wszystkich relacji i jest to zrozumiałe, bo skąd niby ORM ma wiedzieć, jaki efekt chcemy uzyskać?
robert0770
poradziłem sobie, jedyna opcja jaka działała to entity->clear, i z findowanie tego samego obiektu do nowej zmiennej

ps a to co chciałem osiągnąć to ręczna aktualizacja indexu elastica(listener mam wyłączony, pakiet fos) obiektu który był nie kompletny w tej zmiennej którą miałem, dlatego trzeba było pobrać nową/kompletna/aktualną z wszystkimi joinami
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.