У меня есть сущность с фильтрами. Я использовал SearchFilter и все будет хорошо, но теперь я добавляю OrderFilter и NumericFilter, этот фильтр не работает. Я не нашел в документации упоминания о том, что для этих фильтров нужно что-то прописывать в конфигурации. Почему это не работа, я не знаю.
namespace App\Entity;
use ApiPlatform\Core\Annotation\ApiSubresource;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Serializer\Annotation\Groups;
use Symfony\Component\Validator\Constraints as Assert;
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
use Gedmo\Mapping\Annotation as Gedmo;
use ApiPlatform\Core\Annotation\ApiFilter;
use ApiPlatform\Core\Annotation\ApiResource;
use ApiPlatform\Core\Bridge\Doctrine\Orm\Filter\SearchFilter;
use ApiPlatform\Core\Bridge\Doctrine\Orm\Filter\OrderFilter;
use ApiPlatform\Core\Bridge\Doctrine\Orm\Filter\NumericFilter;
/**
* @ORM\Entity(repositoryClass="App\Repository\ProductWatcherRepository")
* @ORM\HasLifecycleCallbacks()
*
* @ApiResource(
* routePrefix="/profile",
* attributes={
* "normalization_context"={"groups"={"product-watcher-list"}},
* },
* itemOperations={"get"={"method"="GET"}},
* collectionOperations={"get"={"method"="GET"}},
* )
*
* @ApiFilter(NumericFilter::class, properties={"percent"}) // NOT WORK
* @ApiFilter(OrderFilter::class, properties={"createdAt", "title"}) // NOT WORK
* @ApiFilter(SearchFilter::class, properties={"title": "partial"}) // WORK
*
* @Gedmo\SoftDeleteable(fieldName="deletedAt", timeAware=false, hardDelete=true)
*/
class ProductWatcher
{
const STATUS_NEW = 1; // New Product Watcher
/**
* @ORM\Id
* @ORM\GeneratedValue
* @ORM\Column(type="integer")
* @Groups("product-watcher-list")
*/
private $id;
/**
* @ORM\Column(type="string", length=255)
* @Assert\NotBlank()
* @Groups("product-watcher-list")
*/
private $title = '';
/**
* @ORM\Column(type="integer")
* @Assert\NotBlank()
* @Assert\Range(
* min = 1,
* max = 99,
* minMessage = "v.percent.range",
* maxMessage = "v.percent.range"
* )
* @Groups("product-watcher-list")
*/
private $percent = 0;
/**
* @ORM\Column(type="integer")
* @Assert\NotBlank()
*/
private $createdAt = 0;
/**
* @ORM\ManyToOne(targetEntity="App\Entity\User", inversedBy="productWatchers")
* @ORM\JoinColumn(nullable=true)
* @Groups("product-watcher-list")
*/
private $user;
/**
* @ORM\ManyToOne(targetEntity="App\Entity\Product", inversedBy="productWatchers")
* @ORM\JoinColumn(nullable=true)
* @ApiSubresource
* @Groups("product-watcher-list")
*/
private $product;
............
Работает только SearchFilter, остальные не работают, в чем может быть проблема, в чванстве тоже только поле для SearchFilter видно
Работа:
/api/profile/product_watchers?title=product1
Не работает:
/api/profile/product_watchers?percent=20
/api/profile/product_watchers?order[title]=desc
Я уже понятия не имею, почему это не работает. У меня нет кеша, я перезагружаю свою среду.