Nel*_*Nel 2 php symfony easyadmin
它在 EasyAdminBundle 文档上说
例如, index() 操作调用名为 createIndexQueryBuilder() 的方法来创建 Doctrine 查询构建器,用于获取显示在索引列表上的结果。如果您想自定义该列表,最好覆盖 createIndexQueryBuilder() 方法而不是整个 index() 方法。
因此,让我们想象一下,当用户被删除时,我的用户实体中的字段 isDeleted 设置为 true。在索引页面中,我只想显示 isDeleted = false 的用户。为此,如何覆盖 createIndexQueryBuilder()?
这是方法 createIndexQueryBuilder
public function createIndexQueryBuilder(SearchDto $searchDto, EntityDto $entityDto, FieldCollection $fields, FilterCollection $filters): QueryBuilder
{
return $this->get(EntityRepository::class)->createQueryBuilder($searchDto, $entityDto, $fields, $filters);
}
Run Code Online (Sandbox Code Playgroud)
我试图像这样覆盖它,但它没有用
public function createIndexQueryBuilder(SearchDto $searchDto, EntityDto $entityDto, FieldCollection $fields, FilterCollection $filters): QueryBuilder
{
$response = $this->get(EntityRepository::class)->createQueryBuilder($searchDto, $entityDto, $fields, $filters);
$response->where('isDeleted', true);
return $response;
}
Run Code Online (Sandbox Code Playgroud)
这对我的 EasyAdmin 4.x 有用
use EasyCorp\Bundle\EasyAdminBundle\Orm\EntityRepository;
class CampaignCrudController extends AbstractCrudController
{
public function __construct(EntityRepository $entityRepository)
{
$this->entityRepository = $entityRepository;
}
public function createIndexQueryBuilder(SearchDto $searchDto, EntityDto $entityDto, FieldCollection $fields, FilterCollection $filters): ORMQueryBuilder
{
$response = $this->entityRepository->createQueryBuilder($searchDto, $entityDto, $fields, $filters);
$response->andWhere('entity.user = :user')->setParameter('user', $this->getUser());
return $response;
}
Run Code Online (Sandbox Code Playgroud)
您所需要的只是添加entity.where 子句:)
public function createIndexQueryBuilder(SearchDto $searchDto, EntityDto $entityDto, FieldCollection $fields, FilterCollection $filters): QueryBuilder
{
parent::createIndexQueryBuilder($searchDto, $entityDto, $fields, $filters);
$response = $this->get(EntityRepository::class)->createQueryBuilder($searchDto, $entityDto, $fields, $filters);
$response->where('entity.isDeleted = 1');
return $response;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2646 次 |
| 最近记录: |