2

UserAccount と UserEmail の 2 つのエンティティがあります。UserAccount には、UserEmail への OneToMany 関連付けがあります。私がやりたいことは、特定の電子メールを持つ UserAccount を選択することです。

DQL を使用して次の SQL JOIN クエリのようなものを生成するにはどうすればよいですか。

SELECT a.* FROM user_account a
    INNER JOIN user_email e ON e.account_id = a.id
    WHERE e.address = 'someone@example.com'

これを行うSELECT account, email FROM UserEmail email JOIN email.account account WHERE email.address = :emailと、メールが返されますが、これは私が本当に望んでいるものではありません。

メールを返信してから、そこからアカウントを取得する必要がありますか?

4

1 に答える 1

3

これがフェッチ参加のすべてです。「メール」オブジェクトには、ここにアカウントが含まれています。

SELECT e, a FROM UserEmail e JOIN e.account a WHERE e.address = :email

次に、単に行う

$account = $email->getAccount();

これを行う別の方法は、その電子メールを持つすべてのアカウントを選択することです。

SELECT a FROM UserAccount a JOIN a.emails e WHERE e.address = :email

これにより、アカウント オブジェクトが直接取得されます。

于 2013-02-23T22:33:07.890 に答える