如何在 Api-Platform 中断言非空子资源?
How to assert not null subresource in Api-Platform?
我有 2 个实体:
class Act
{
/**
* @Assert\Count(min=1)
* @Assert\Valid(traverse=true)
* @ORM\OneToMany(targetEntity="App\Entity\ActItem", mappedBy="act", cascade={"persist"})
*/
private $items;
}
class ActItem
{
/**
* @ORM\ManyToOne(targetEntity="App\Entity\Act", inversedBy="items")
* @ORM\JoinColumn(nullable=false)
*/
private $act;
/**
* @Assert\NotNull
* @Assert\Type("float")
*
* @ORM\Column(type="float")
*/
private $count;
}
ActItem 有 Assert\NotNull,但是当我尝试 create/update 使用 {count: null} 之类的项目时,我得到响应:
hydra:description: "The type of the "count" attribute must be "float", "NULL" given."
我注意到如果我删除 @ORM\Column(type="float") 然后我得到:
hydra:description: "items[0].count: This value should not be blank."
那么为什么它会这样工作呢?我怎样才能让它在另一个订单中工作?
我前段时间遇到过这个问题,显然这是因为你的学说字段没有设置 nullable
。 (@Assert\Type("float")
)
在运行时 api-platform 检查你的 Doctrine 元数据并抛出 InvalidArgumentException
如果你的数据不符合标准。
(我也不喜欢这个 "feature",不知道他们为什么要这样做)。
要"fix",您将字段更改为@ORM\Column("float", nullable=true)
也可以覆盖 api_platform.doctrine.orm.metadata.property.metadata_factory
服务并更改其行为以忽略原则 nullable
。
我有 2 个实体:
class Act
{
/**
* @Assert\Count(min=1)
* @Assert\Valid(traverse=true)
* @ORM\OneToMany(targetEntity="App\Entity\ActItem", mappedBy="act", cascade={"persist"})
*/
private $items;
}
class ActItem
{
/**
* @ORM\ManyToOne(targetEntity="App\Entity\Act", inversedBy="items")
* @ORM\JoinColumn(nullable=false)
*/
private $act;
/**
* @Assert\NotNull
* @Assert\Type("float")
*
* @ORM\Column(type="float")
*/
private $count;
}
ActItem 有 Assert\NotNull,但是当我尝试 create/update 使用 {count: null} 之类的项目时,我得到响应:
hydra:description: "The type of the "count" attribute must be "float", "NULL" given."
我注意到如果我删除 @ORM\Column(type="float") 然后我得到:
hydra:description: "items[0].count: This value should not be blank."
那么为什么它会这样工作呢?我怎样才能让它在另一个订单中工作?
我前段时间遇到过这个问题,显然这是因为你的学说字段没有设置 nullable
。 (@Assert\Type("float")
)
在运行时 api-platform 检查你的 Doctrine 元数据并抛出 InvalidArgumentException
如果你的数据不符合标准。
(我也不喜欢这个 "feature",不知道他们为什么要这样做)。
要"fix",您将字段更改为@ORM\Column("float", nullable=true)
也可以覆盖 api_platform.doctrine.orm.metadata.property.metadata_factory
服务并更改其行为以忽略原则 nullable
。