我有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 ,但是当我尝试使用类似{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."
那么为什么它如此工作?我怎样才能使其按其他顺序工作?
答案 0 :(得分:0)
我前段时间遇到了这个确切的问题,显然是因为您的学说字段设置为非nullable
。 (@Assert\Type("float")
)
在运行时api平台期间,如果您的数据不符合标准,则检查您的Doctrine元数据并抛出InvalidArgumentException
。
(我也不喜欢这种“功能”,不确定为什么要这么做)。
要“修复”此问题,请将字段更改为@ORM\Column("float", nullable=true)
还可以覆盖api_platform.doctrine.orm.metadata.property.metadata_factory
服务并更改其行为以忽略原则nullable
。