FOK*_*rry 6 symfony-forms symfony doctrine-orm symfony2-easyadmin
我有一个带有关联字段类型(相关实体列表)的表单。
有带有字段实体“TypeQuizz”(@ORM\ManyToOne)的测验实体。不可能使用 DQl 过滤器来显示列表测验。
/**
* @ORM\ManyToOne(targetEntity="App\Entity\Challenge\TypeQuizz")
* @ORM\JoinColumn(nullable=false)
*/
private $typeQuizz;
Run Code Online (Sandbox Code Playgroud)
无法根据 TypeQuizz 实体的 codeTypeQuizz 显示测验列表
文件配置 EasyAdmin.yaml
使用 DQL 过滤器无法从实体测验访问属性关联 TypeQuizz 的错误
如何在属性关联实体上应用 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;
}
}
Run Code Online (Sandbox Code Playgroud)
我修改了.yml文件中的dql_filter,删除了'entity',直接调用了别名。
这个解决方案对我有用。
归档时间: |
|
查看次数: |
3749 次 |
最近记录: |