私は次のmysqlクエリを持っています
SELECT
*
FROM
(
SELECT
CASE WHEN t2.user1=1 THEN t2.user2 ELSE t2.user1 END AS userId
FROM
t AS t2
WHERE 1 IN (t2.user1,t2.user2)
AND t2.[status]=1
) as tbl
WHERE EXISTS
(
SELECT
NULL
FROM
t
WHERE 2 IN (t.user1,t.user2)
AND tbl.userId=(CASE WHEN t.user1=2 THEN t.user2 ELSE t.user1 END)
AND t.[status]=1
)
正常に動作しますが、Doctrine2クエリに変換できません。
どのようにアイデアはありますか?
http://sqlfiddle.com/#!2/4c792/11
[編集]ネイティブSQLを使用してクエリを実行しました。
$rsm = new ResultSetMapping();
$rsm->addEntityResult('myProject\DataBundle\Entity\Friend', 'f');
$sql= '
SELECT
*
FROM (
SELECT
CASE WHEN t2.user1=2 THEN t2.user2 ELSE t2.user1 END AS userId
FROM friends AS t2
WHERE 2 IN (t2.user1,t2.user2)
AND t2.status=1
) as tbl
WHERE EXISTS (
SELECT
NULL
FROM
friends as t
WHERE 3 IN (t.user1,t.user2)
AND tbl.userId=(CASE WHEN t.user1=3 THEN t.user2 ELSE t.user1_id END)
AND t.isFriendOrFollower=1 )';
$query = $this->getEntityManager()
->createNativeQuery($sql,$rsm);
ただし、結果は表示されません。