我想將此請求在 sql 中轉換為 dql ,需要一點幫助。
SELECT *, COUNT(*) AS nb_files
FROM palettes
JOIN files_palettes ON palettes.id = files_palettes.palettes_id
GROUP BY files_palettes.palettes_id
ORDER BY nb_files DESC
編輯
嘗試的查詢。
public function findSaveByPagesByFilters()
{
$entityManager = $this->getEntityManager();
$select = " SELECT COUNT (p) AS nb_files";
$from = " FROM App\Entity\Palettes p ";
$join = "JOIN p.files f ";
$on = " ON p.id = f.palettes ";
$groupBy = " GROUP BY f.p";
$orderBy = " ORDER BY f.name DESC ";
$dqlQuery = $select . $from . $join . $on . $groupBy;
//dd($dqlQuery);
$query = $entityManager->createQuery(
$dqlQuery
);
return $query->getResult();
}
這是失眠發送的訊息:
[語法錯誤] 第 0 行,第 74 列:錯誤:預期的字串結尾,得到 'ON'
uj5u.com熱心網友回復:
我假設您處于存盤庫的背景關系中,因此在這種情況下,我建議您使用Doctrine Query Builder,它有助于簡化您的代碼流,并且可能會在未來幫助您進行 SQL 轉換。
要回答這個特定問題,您可能需要執行以下操作:
public function findSaveByPagesByFilters()
{
return $this->createQueryBuilder('p')
->innerJoin('p.files', 'f', Query\Expr\Join::ON, 'p.id = f.pallets')
->select(['*', 'count(p.id)'])
->groupBy('f.p')
->orderBy('f.name', 'DESC')
->getQuery()
->getResult();
}
uj5u.com熱心網友回復:
$dql = "SELECT p as palette, count(p.id) as cnt FROM App\Entity\Palettes p " .
"JOIN p.files f GROUP BY p.id ORDER BY cnt DESC";
;
謝謝亞歷克西斯!!
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/353210.html
