执行查询时发生异常: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 列中。
有点懵
我想将数据导入我的数据库。
这是一个示例实体:
所有必填字段都已填写,但学说告诉我:
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 列中。