これに対する正しい結果を見つけるのに苦労しています。
1対1のマッピングがあります。次の 2 つのテーブルがあります。
/**
* @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;
}
以下のようにエンティティ 1 を取得するたびに:
$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();
Doctrine は、私が望まない usersSettings エンティティへの結合をすぐに実行します:
t0.id を id1 として、t0.username を username2 として、t0.email を email3 として、t0.password を password4 として、t29.id を id30 として、t29.is_notify_by_email として is_notify_by_email31 として、t29.user_id を user_id32 として選択します。 t29.user_id = t0.id WHERE t0.id = ?
のような他のタイプのマッピングは遅延読み込みOneToMany
をManyToOne
実行しますが、1 対 1 のマッピングの場合、遅延読み込みを構成できませんでした。この関係を遅延ロードするにはどうすればよいですか? doctrine 2.3 と Symfony 2.1 を使用しています