我很難找到正確的結果。懶惰加載與教條一對一映射
我有一對一的映射。有兩個表:
/**
* @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;
}
每當我取如下實體之一:
$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();
學說立即執行加入到我不想usersSettings實體:
選擇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 JOIN users_settings t29 ON t29.user_id = t0.id WHERE t0.id =?
其他類型,如OneToMany
和ManyToOne
映射的執行延遲加載,但在一對一的映射情況下,我無法配置懶加載。我怎樣才能延遲加載這個關係?我正在使用教義2.3和Symfony 2.1
它還是加入extra_lazy後加入表格。我也曾嘗試過,但沒有工作 – sonam
您的服務器使用APC嗎?更新註釋之後,確保你的apc緩存被清除了(如果你必須重新啓動apache apache)。除非我重新啓動apache,否則某些教義註釋沒有起作用。 – lifo
我以前啓用了APC,但在開發過程中變得頭疼,所以APC未啓用 – sonam