在实体类中使用cascade选项
Api Platform 可以轻松地显示和过滤实体之间的关系,但在保存实体时,可能会出现问题。 原因是Api Platform默认情况下不会自动保存父实体的子实体列表,也就是OneToMany关系。为了解决这个问题,我们需要在实体类中声明Cascade选项。 简单的解决方法是将Cascade选项设置为PERSIST,如下所示:
use Doctrine\ORM\Mapping as ORM;
use ApiPlatform\Core\Annotation\ApiResource;
/**
* @ORM\Entity
* @ApiResource
*/
class ParentEntity
{
/**
* @ORM\Column(type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @ORM\OneToMany(targetEntity="ChildEntity", mappedBy="parent", cascade={"persist"})
*/
private $children;
// ...
}
注意,我们在OneToMany注释中包含了cascade={"persist"}选项。 这将确保在保存父实体时保存子实体列表。 现在,当您将ParentEntity POST到API中时,子实体将自动保存。