I need to persist a ManyToMany relation with api platform, but i get a error, i've tried with cascade={"persist"} and with groups.
When i send the request with the object, i get; Nested documents for attribute "idVehicles" are not allowed. Use IRIs instead.
{
"name": "carl",
"lastName": "abs",
"idVehicles": [
{
"license": "1212121"
}
]
}
here is my users entity:
/**
* Users
*
* @ORM\Table(name="users")
* @ORM\Entity
* @ApiResource(
* attributes={"pagination_enabled"=false},
* normalizationContext={"groups"={"users_read"}},
* denormalizationContext={"groups"={"users_write"}},
* )
*/
class Users
{
/**
* @var int
*
* @ORM\Column(name="id", type="integer", nullable=false)
* @ORM\Id
* @ORM\GeneratedValue(strategy="SEQUENCE")
* @ORM\SequenceGenerator(sequenceName="users_id_seq", allocationSize=1, initialValue=1)
* @Groups({"users_read", "users_write"})
*/
private $id;
/**
* @var string|null
*
* @ORM\Column(name="name", type="string", length=128, nullable=true)
* @Groups({"users_read", "users_write"})
*/
private $name;
/**
* @var string|null
*
* @ORM\Column(name="last_name", type="string", length=128, nullable=true)
* @Groups({"users_read", "users_write"})
*/
private $lastName;
/**
* @var \Doctrine\Common\Collections\Collection
*
* @ORM\ManyToMany(targetEntity="Vehicles", mappedBy="idUsers", cascade={"persist"})
* @Groups({"users_read", "users_write"})
*/
private $idVehicles;
}
here is my vehicles entity:
/**
* Users
*
* @ORM\Table(name="users")
* @ORM\Entity
* @ApiResource(attributes={"pagination_enabled"=false})
*/
class Users
{
/**
* @var int
*
* @ORM\Column(name="id", type="integer", nullable=false)
* @ORM\Id
* @ORM\GeneratedValue(strategy="SEQUENCE")
* @ORM\SequenceGenerator(sequenceName="vehicles_id_seq", allocationSize=1, initialValue=1)
*/
private $id;
/**
* @var string|null
*
* @ORM\Column(name="license", type="string", length=16, nullable=true, cascade={"persist"})
* @Groups({"users_read", "users_write"})
*/
private $license;
/**
* @var \Doctrine\Common\Collections\Collection
*
* @ORM\ManyToMany(targetEntity="Users", inversedBy="idUsers")
* @ORM\JoinTable(name="users_vehicles",
* joinColumns={
* @ORM\JoinColumn(name="id_vehicles", referencedColumnName="id")
* },
* inverseJoinColumns={
* @ORM\JoinColumn(name="id_users", referencedColumnName="id")
* }
* )
*/
private $idUsers;
Are you sure you update your schema ? I test your code and it's working