У меня есть 2 простые сущности, связанные между собой:
<?php
declare(strict_types=1);
namespace App\Entity;
// use ... ;
/**
* @ApiResource(
* subresourceOperations={
* // ...
* },
* // ... ,
* normalizationContext={"groups" = {"category:read"}}
* )
* @ ...
*/
class Category
{
// ...
/**
* @ORM\OneToMany(targetEntity="Object", mappedBy="category")
* @ApiSubresource
* @Groups({"category:read"})
*/
private $objects;
// ...
public function getObjects(): Collection
{
return $this->objects;
}
}
И
<?php
declare(strict_types=1);
namespace App\Entity;
// use ... ;
/**
* @ApiResource(
* // ...
* )
* @ ...
*/
class Object
{
// ...
/**
* @ORM\ManyToOne(targetEntity="App\Entity\Category")
* @ORM\JoinColumn(nullable=false)
* @Groups({"object:read", "object:write"})
*/
private $category;
/**
* @ORM\Column(type="boolean")
*/
private $isActive = true;
/**
* @ORM\Column(type="string", length=255, nullable=true)
* @Groups({"object:read", "object:write", "category:read"})
*/
private $name;
// ...
}
Я хочу получить /api/сategories/{id}
связанных данных Objects
, где isActive = true
. Теперь я получаю все записи.
Я пытался использовать QueryItemExtensionInterface
и QueryCollectionExtensionInterface
, но я все еще получаю все записи. fetch ="EAGER"
также не помог мне
Я уточняю, я не хочу получать это по подресурсу /api/categories/{id}/objects
. Я хочу получить его, используя /api/сategories/{id}
Я также хочу, чтобы это зависело от роли пользователя. Чтобы админ мог получить все записи, а пользователь только isActive = true
Есть идеи как это сделать?