Mam trudności ze znalezieniem prawidłowego wyniku.Leniwe ładowanie z doktryną jeden do jednego mapowanie
Mam odwzorowanie jeden do jednego. Istnieją dwie tabele:
/**
* @ORM\Table(name="users")
* @ORM\Entity
*/
class Users {
/**
* @ORM\OneToOne(targetEntity="UsersSettings", mappedBy="user",cascade={"persist"})
*/
private $userSetting;
//getters and setters
}
/**
* @ORM\Table(name="notifications_settings")
* @ORM\Entity
*/
class UsersSettings {
/**
* @var Users
*
* @ORM\OneToOne(targetEntity="Users", inversedBy="userSetting")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="user_id", referencedColumnName="id")
* })
*/
private $user;
}
Ilekroć pobrać jeden podmiot, jak poniżej:
$q = $this
->createQueryBuilder('u')
->select('u, r')
->leftJoin('u.roles', 'r')
->where('u.username = :username OR u.email = :email')
->setParameter('username', $username)
->setParameter('email', $username)
->getQuery();
Doktryna natychmiast wykonuje dołączyć do usersSettings podmiotowi, który nie chcę:
SELECT t0.id AS id1, t0.username AS username2, t0.email AS email3, t0.password AS password4, t29.id AS id30, t29.is_notify_by_email AS is_notify_by_email31, t29.user_id AS user_id32 FROM users t0 LEFT DOŁĄCZ users_settings t29 ON t29.user_id = t0.id WHERE t0.id =?
Inne rodzaje mapowania jak OneToMany
i ManyToOne
wykonuje leniwy załadunku, ale w przypadku 12:59 mapping, nie mogę skonfigurować do leniwego obciążeniem. Jak mogę leniwy załadować tę relację? Korzystam z doktryny 2.3 i Symfony 2.1
nadal dołącza do tabel po dodaniu extra_lazy. Próbowałem wcześniej, ale nie działał. – sonam
Czy twój serwer używa APC? Po aktualizacji adnotacji upewnij się, że pamięć podręczna apc jest wyczyszczona (zrestartuj apache apache, jeśli musisz). Wystąpiły problemy z niektórymi adnotacjami do doktryn, które nie mają wpływu, chyba że ponownie uruchomię apache. – lifo
Poprzednio włączałem APC, ale stałem się bólem głowy podczas rozwoju, więc APC nie jest włączone – sonam