gpt4 book ai didi

php - 使用自定义 SQL 的学说子查询

转载 作者:行者123 更新时间:2023-11-29 03:26:30 25 4
gpt4 key购买 nike

我从 Symfony 开始,我试图让所有电影列表和他们的 AVG 率显示在网格中。

我的查询在 mySQL 上运行良好但在 Symfony 上运行不正常

 SELECT m.id
FROM AppBundle:Movie AS m
LEFT JOIN (

SELECT AVG( rate ) AS avg_rate, movie_id
FROM AppBundle:Rate
)r ON m.id = r.movie_id

当我运行它时:

$em = $this->getDoctrine()->getManager();
$query = $em->createQuery(
'SELECT m.id, avg_rate
FROM AppBundle:Movie AS m
LEFT JOIN ( SELECT AVG( rate ) AS avg_rate, movie_id
FROM AppBundle:Rate
) AS r ON m.id = r.movie_id');
$movies = $query->getResult();

我得到了这个错误:

SELECT AVG(': Error: Class '(' is not defined.

Here are my Mysql Results

你能帮忙吗?
谢谢

最佳答案

事实上,使用 ORM Doctrine,我们在实体之间有很多关系:

  • 一对多
  • 多对多
  • 一对一

有了这些关系,您可以使用 ->join()addSelect() 在第二个实体的表中添加另一个条件。简而言之,一个例子:

$qb = $this->createQueryBuilder('m'); // m : movie
$qb->select('m')
->innerJoin('m.rates', 'r')
->addSelect('r')
->andWhere('r.rate = :rate')
->setParameter('rate', $rate) // $rate = value which you want

I recommend you to use->select(), ->innerJoin()rather than the raw request like you used. It's clearer for me, so you can see the document in here : query-builder-ormDoctrine.

关于php - 使用自定义 SQL 的学说子查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35395071/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com