Хотя я опытный разработчик, я довольно новичок в Symfony / API Platfrom / GraphQL. Моя задача проста - добавить к сущности Product
фильтр, который позволяет отфильтровывать только активные продукты. Бонусные баллы, если фильтр установлен по умолчанию, то есть по умолчанию возвращаются только активные продукты, и вам нужно добавить параметр, если вы хотите видеть неактивные продукты. Но если это слишком сложно, просто добавьте фильтр.
ОК, поэтому в моем Product.php
у меня есть (показаны только соответствующие части):
use Doctrine\ORM\Mapping as ORM;
use ApiPlatform\Core\Annotation\ApiFilter;
use ApiPlatform\Core\Bridge\Doctrine\Orm\Filter\BooleanFilter;
/**
* @ApiFilter(BooleanFilter::class, properties={"active" : "exact"})
*/
class Product {
/**
* @ORM\Column(type="boolean")
*/
private $active;
}
Затем я пытаюсь изменить существующий запрос, чтобы отфильтровать только активные продукты:
{
sellers(id: 5, active: true) {
edges {
node {
categories {
edges {
node {
products (active: true) {
totalCount
edges {
node {
name
}
}
}
}
}
}
}
}
}
Буууут, я получаю:
{
"errors": [
{
"message": "Unknown argument \"active\" on field \"products\" of type \"Category\".",
"category": "graphql",
"locations": [
{
"line": 39,
"column": 25
}
]
}
]
}
Теперь, если я изменю это на запрос продуктов:
{
products (active: true) {
totalCount
edges {
node {
name
}
}
}
}
Это работает!
Итак, что происходит? Я хотел бы сделать фильтр для исходного запроса, чтобы он также возвращал все остальные данные, а не только простые продукты. Что я делаю неправильно? Такое ощущение, что я неправильно понимаю фундаментальную концепцию.