执行查询时发生异常:SQLSTATE[23000]:违反完整性约束:1048 列 'pokemon_id' 不能为空

An exception occurred while executing a query: SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'pokemon_id' cannot be null

有点懵

我想将数据导入我的数据库。 这是一个示例实体:

所有必填字段都已填写,但学说告诉我:

In ExceptionConverter.php line 111:

An exception occurred while executing a query: SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'pokemon_id' cannot be null

In Exception.php line 26:

  SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'pokemon_id' cannot be null


In Statement.php line 92:

  SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'pokemon_id' cannot be null

这是我实体的截图。

/**
 * @ORM\Column(type="integer")
 */
private ?int $pokemonId;

public function getPokemonId(): ?int
{
    return $this->pokemonId;
}

public function setPokemonId(int $pokemonId): self
{
    $this->pokemonId = $pokemonId;

    return $this;
}

我哪里漏了重点?

P.S.:

也许我还应该告诉大家,这个 属性 永远不能为空。 我和一个

有关系
/**
* @ORM\ManyToOne(targetEntity="App\Entity\Pokemon\Pokemon", inversedBy="pokemon_id")
*/
private $pokemon;

public function getPokemon(): ?Pokemon
{
    return $this->pokemon;
}

public function setPokemon($pokemon): self
{
    $this->pokemon = $pokemon;

    return $this;
}

为什么SQL不带我的属性?

这是解决方案。

当你有一对多关系时(在我的例子中是口袋妖怪),你不能使用 setpokemonId() 来存储关系,而是使用 setPokemon()。 Doctrine 会将值存储在 pokemon_id 列中。