gpt4 book ai didi

symfony - getResult 返回与 SQL 查询 Symfony2 不同的结果

转载 作者:行者123 更新时间:2023-12-02 15:26:39 24 4
gpt4 key购买 nike

只需加入第一个上传到其图库图像的成员(member),但由于我是 symfony 的新手,因此遇到了一个大问题。

表格:

CREATE TABLE `member` (
`member_id` int(10) NOT NULL AUTO_INCREMENT,
`name` varchar(256) COLLATE utf8_unicode_ci NOT NULL,
PRIMARY KEY (`member_id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

CREATE TABLE `image` (
`image_id` int(10) NOT NULL AUTO_INCREMENT,
`member_id` int(10) NOT NULL,
`path` varchar(256) COLLATE utf8_unicode_ci NOT NULL,
PRIMARY KEY (`image_id`),
KEY `image_member_id_idx` (`member_id`),
CONSTRAINT `image_member_id` FOREIGN KEY (`member_id`) REFERENCES `member` (`member_id`) ON DELETE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

行动:

$items = $this->getDoctrine()
->getManager()
->getRepository('AcmeMyBundle:Member')
->createQueryBuilder('m')
->select('m','i')
->leftJoin('Acme\MyBundle\Entity\Image', 'i', 'WITH','i.memberId = m.memberId')
->addGroupBy('m.memberId')
->setMaxResults(10)
->getQuery()
->getArrayResult();

它返回数据库中记录的两倍,而不是限制和分组设置当我只打印 ->getQuery->getSQL() 时,它返回

SELECT m0_.member_id AS member_id0, 
m0_.name AS name1,
i1_.image_id AS image_id2,
i1_.path AS path3,
i1_.member_id AS member_id4
FROM member m0_
LEFT JOIN image i1_
ON (i1_.member_id = m0_.member_id)
GROUP BY m0_.member_id LIMIT 10

这个查询直接从数据库执行它会返回正确的答案。我需要帮助,哪里可能有错误?

最佳答案

如果您已正确映射 OneToMany 关系,则不应使用以下列显式加入:

->leftJoin('Acme\MyBundle\Entity\Image', 'i', 'WITH','i.memberId = m.memberId')

而是:

->leftJoin('Acme\MyBundle\Entity\Image', 'i')

您能向我们展示您的实体吗?

此外,您是否考虑过使用 ->getResult() (对象水合)来代替?

关于symfony - getResult 返回与 SQL 查询 Symfony2 不同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16194374/

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