簡體   English   中英

Dctrine DQL連接表

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM