Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [SF][Symfony2][SF2] Jak dostać się do entity z entity z innego bundla
Forum PHP.pl > Forum > PHP > Frameworki
K0nio
Witam , borykam się z takim problemem mam dwa bundle
CODE
Surgery/PatientBundle/Entity/Patients
Surgery/LoginBundle/Entity/User

Chciałbym wykonać nastepującą czynność.
Użytkownik się rejestruje dostaje ID za to odpowiada entity User a po zalogowaniu może wypełnić deklarację za to odpowiada Patients. Chciałbym, w entity Patients móc pobrać id Usera , próbowałem odwołaś się poprzez wstawienie
use Surgery\LoginBundle\Entity\User; jednak nie pomogło. Czy istnieje sposób by w entity Patients odwołać się jakoś w ten sposób getUser()-getId() ? Czy wymaga to innego zastosowania ? Rejestracja i logowanie Usera działa.
Ktoś ma jakieś wskazówki ?

minolone
Może takie coś pomoże

  1. public function setUser(\Surgery\LoginBundle\Entity\User $id)
  2. {
  3. $this->user = $id;
  4. }
  5.  
  6. public function getUser()
  7. {
  8. return $this->user;
  9. }
Crozin
Pokaż jakiś kod. Z punktu widzenia Doctrine to dwie encje w dwóch różnych przestrzeniach nazw (nie bundalch, które z tym projektem mają niewiele wspólnego), a z tym Doctrine radzi sobie bez najmniejszego problemu.
Szymciosek
Do entity przecież możesz się podłączać tak:

  1. $entityManager = $this->getDoctrine()->getEntityManager();
  2. $entities = $entityManager->getRepository('ApiRestServiceBundle:Users')->findAll();


i wtedy pobierać jakieś dane wykorzystując dane entity, a w nim jest deklaracja, z której tabeli korzystać.
K0nio
A więc tak mam dwa entity


  1. namespace Surgery\LoginBundle\Entity;
  2. class User extends BaseUser
  3. {
  4. private $id;
  5. }

oraz
  1. namespace Surgery\PatientBundle\Entity;
  2. class Patients
  3. {
  4. private $id; //pk
  5. private $user_id; ///fk
  6.  
  7. }

Do tego mam wygenerowane settery i gettery poprzez komende z konsoli.
Opiszę to jakbym ja to widział.
Użytkownik się rejestruje dostaje id ( User). Po zalogowaniu ma wypełnić formularz i po przesłaniu oraz przejściu walidacji id zalogowanego użytkownika ma być przesłane do user_id.
Próbowałem robić relację OneToOne między entity ale coś robię źle albo wogóle trzeba się do tego inaczej zabrać.
Mam nadzieję , że troche to jasniej napisałem , wiem że mam kłopoty z tłumaczeniem



Crozin
1. ORM - Object-relational mapping - czyli nie przekazujesz żadnych ID tylko całe obiekty (patrz: Patient::$user).
2. Jeżeli masz zalogowanego użytkownika, to jaki problem stanowi jego przekazanie do nowej instancji obiektu Patient?
3. Relacje OneToMany masz dokładnie opisaną w dokumentacji, wraz z całymi przykładami kodu.
K0nio
Udało mi się wynik jest taki jak oczekiwałem

Zrobiłem relację OneToOne między User a Patients , utworzyłem z konsoli gettery i settery a następnie jeżeli było zdarzenie POST przesyłam
  1. $entity->setUser($this->getUser());

i dodaje mi id usera w tabelę Patients.
Nie wiem czy to dobre rozwiązanie , nie wiem czy to dobre odczucie bo rozpoczynam zabawę z Symfony2 ale mocno ułatwia pisaniem kodu myślałem, że będę musiał się mocno spisać i natrudzić . Dziękuje za nie podanie kodu ;D na co na początku liczyłem bo nic tak nie cieszy jak własnoręczne dojście do rozwiązania zagadki
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.