[英]Doctrine DQL join tables
對於我的API開發,我使用功能性和學說 。 我目前正在編程一個用戶可以喜歡發布的端點。 每個帖子都有一位作者。 我有2個表,其中包含以下列和示例數據:
行動
id post_id user_id createdAt
1 10 1 0000-00-00 00:00:00
2 12 2 0000-00-00 00:00:00
3 13 3 0000-00-00 00:00:00
(post_id =發布表的外鍵) (user_id =喜歡發布的源用戶)
發布
id user_id createdAt
10 62 0000-00-00 00:00:00
12 4 0000-00-00 00:00:00
13 4 0000-00-00 00:00:00
(user_id =用戶表的外鍵)
我需要的
我需要作者(user_id)擁有的total_likes。 可以通過加入post表在Action表中查詢。 我已經嘗試為此創建一個DQL查詢:
// Get total likes an autor has received
$queryBuilder->select('count(p)')
->from('Db\Entity\Action', 'a')
->leftJoin('p.post', 'p')
->where('p.user = :user')
->setParameter('user', $targetUser);
$totalLikes = $queryBuilder->getQuery()->getSingleScalarResult();
在此查詢中,我得到了錯誤的total_likes數量:
{
"total_likes": "2"
}
我該如何更正此查詢,以獲取正確的用戶點贊次數? 使用示例表數據,user_id = 62的total_likes應該給我以下信息:
{
"total_likes": "1"
}
嘗試這個:
// Get total likes an autor has received
$queryBuilder
->select('count(p)')
->from('Db\Entity\Action', 'a')
->leftJoin(
'Db\Entity\Post',
'p',
\Doctrine\ORM\Query\Expr\Join::WITH,
'a.post = p.id'
)
->where('p.user = :user')
->setParameter('user', $users);
$totalLikes = $queryBuilder->getQuery()->getSingleScalarResult();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.