我正在使用Sylius 1.11,并试图基于本机Order实体的自定义字段构建自定义过滤器。
该字段名为author
,它引用adminUser_id。有时,没有adminUser_id,所以数据库中的字段是null
。
我想创建一个多选过滤器,以便在adminUser_id等于2且为null时查找订单。
下面是过滤器:
<?php
declare(strict_types=1);
namespace App\Component\App\Grid\Filter;
use Sylius\Component\Grid\Data\DataSourceInterface;
use Sylius\Component\Grid\Filtering\FilterInterface;
final class MultiselectFilterAuthor implements FilterInterface
{
public function apply(DataSourceInterface $dataSource, string $name, $data, array $options): void
{
if (empty($data)) {
return;
}
$field = $options['field'] ?? $name;
$expressionBuilder = $dataSource->getExpressionBuilder();
$expressions[] = $expressionBuilder->isNull('author');
$expressions[] = $expressionBuilder->in('author.id', [2]);
$dataSource->restrict($expressionBuilder->orX(...$expressions));
}
}
如果我独立地尝试每个表达式,它就工作了。
$expressionBuilder = $expressionBuilder->isNull('author');
->仅显示有作者的订单=== null
但是当我把它们结合起来的时候,就不管用了
1条答案
按热度按时间aamkag611#
我终于知道为什么不管用了...
我需要在Sylius网格查询构建器中为Order实体添加一个
author
联接: