gpt4 book ai didi

Symfony EasyAdminBundle : Dql Filter entities in assotiation field on List not worrking

转载 作者:行者123 更新时间:2023-12-03 16:04:41 24 4
gpt4 key购买 nike

我有一个带有关联字段类型(相关实体列表)的表单。

有带有字段实体“TypeQuizz”(@ORM\ManyToOne)的测验实体。
不可能使用 DQl 过滤器来显示列表测验。

/**
* @ORM\ManyToOne(targetEntity="App\Entity\Challenge\TypeQuizz")
* @ORM\JoinColumn(nullable=false)
*/
private $typeQuizz;

无法根据 TypeQuizz 实体的 codeTypeQuizz 显示测验列表

文件配置 EasyAdmin.yaml
enter image description here

使用 DQL 过滤器无法从实体测验访问属性关联 TypeQuizz 的错误

enter image description here

如何在属性关联实体上应用 Dql 过滤器?

最佳答案

我覆盖了支持实体关联的方法 createListQueryBuilder

<?php
namespace App\Controller\Admin;

use EasyCorp\Bundle\EasyAdminBundle\Controller\AdminController as BaseAdminController;

class QuizzChallengeController extends BaseAdminController
{
protected function createListQueryBuilder($entityClass, $sortDirection, $sortField = null, $dqlFilter = null)
{
/* @var EntityManager */
$em = $this->getDoctrine()->getManagerForClass($this->entity['class']);
/* @var DoctrineQueryBuilder */
$queryBuilder = $em->createQueryBuilder()
->select('entity')
->from($this->entity['class'], 'entity')
->leftJoin('entity.typeQuizz','typeQuizz');

if (!empty($dqlFilter)) {
$queryBuilder->andWhere($dqlFilter);
}

if (null !== $sortField) {
$queryBuilder->orderBy('entity.'.$sortField, $sortDirection ?: 'DESC');
}

return $queryBuilder;
}
}

我修改了.yml文件中的dql_filter,删除了'entity',直接调用了别名。
enter image description here

这个解决方案对我有用。

关于Symfony EasyAdminBundle : Dql Filter entities in assotiation field on List not worrking,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50877535/

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