Есть ли способ передать массив идентификаторов уже созданных связанных сущностей на ресурсе создания сущности? Документы по умолчанию говорят о создании всего по запросу.
Некоторые данные.
У меня есть сущность Squad:
/**
* @ApiResource(iri = "http://schema.org/Squad")
* @ORM\Table(name = "squads")
* @ORM\Entity()
*/
class Squad
{
use IdentityAutoStrategy, Timestamps;
/**
* @var string
* @ORM\Column(type = "string", length=25, unique=true)
*/
private $name;
/**
* @var Collection|User[]|null
* @ORM\OneToMany(targetEntity = "User", mappedBy = "squad")
* @ApiProperty(
* attributes = {
* "swagger_context" = {
* "$ref" = "#/definitions/User",
* }
* }
* )
* @ApiSubresource(max_depth=1)
*/
private $users;
И сущность User:
/**
* @ApiResource()
* @ORM\Table(name = "users")
* @ORM\Entity(repositoryClass = "GPL\Repository\UserRepository")
*/
class User implements UserInterface, Serializable
{
use Timestamps, IdentityAutoStrategy;
/**
* @ORM\Column(type = "string", length=25, unique=true)
*/
private $username;
/**
* @ORM\Column(type = "string", length=64)
*/
private $password;
/**
* @ORM\Column(type = "string", length=254, unique=true)
*/
private $email;
/**
* @ORM\Column(name = "is_active", type = "boolean")
*/
private $isActive;
/**
* @var Squad
* @ORM\ManyToOne(targetEntity = "Squad", inversedBy = "users")
* @ORM\JoinColumn(name = "squad_id", referencedColumnName = "id")
* @ApiProperty(
* attributes = {
* "swagger_context" = {
* "$ref" = "#/definitions/Squad",
* }
* }
* )
*/
private $squad;
Основная задача, которую я хочу достичь, - это отправить POST /api/squads с "users": [1,2,3], где 1, 2, 3 - это идентификаторы существующих пользователей, и связывает их с созданным объектом Squad. Доступно ли это с использованием некоторых аннотаций по умолчанию из API-платформы? Или как я могу это сделать?
приложение / LD + JSON





Для JSON-LD вы можете использовать IRI следующим образом:
users: ["users/1", "users/2"]
Имейте в виду, что это не сработает, если вы отключите операцию GET item в своем пользовательском ресурсе.
Вы также можете принудительно применить это и отключить встроенные данные, чтобы ваши клиенты не создавали новых пользователей, исключив все ваши группы пользовательских полей.
/**
* @ApiResource(attributes = {
* "normalization_context" = {"groups" = {"squad", "squad:user", "user"}},
* "denormalization_context" = {"groups" = {"squad", "squad:user"}}
* })
*/
class Squad
{
...
/**
* ...
* @Groups("squad")
*/
private $name;
/**
* ...
* @Groups("squad:user")
*/
private $users;
...
class User
{
/**
* ...
* @Groups("user")
*/
private $username;
...
Какой тип контента используется в вашем случае для публикации данных? приложение / json или данные формы?