我嘗試了幾種方法讓 symfony 默認布林值為 0 而不是 null(因為 null 在重繪 時會給我一個資料庫級別的錯誤)。
執行查詢時發生例外:SQLSTATE [23000]:完整性約束違規:1048 列“auto_created”不能為空
這沒有什么區別:
/**
* @ORM\Column(type="boolean", options={"default":"0"})
*/
private $autoCreated;
二傳手的一些邏輯也沒有區別
public function setAutoCreated(bool $autoCreated): self
{
if is_null($autoCreated) {
$autoCreated = 0;
}
$this->autoCreated = $autoCreated;
return $this;
}
也
public function setAutoCreated(bool $autoCreated): self
{
if is_null($autoCreated) {
$autoCreated = false;
}
$this->autoCreated = $autoCreated;
return $this;
}
資料庫看起來像這樣
我顯然錯過了什么......?
當然我可以做一個簡單的 $user->setAutoCreated(false); 我在任何地方都創建了這個物體,但我不明白為什么我必須這樣做??
uj5u.com熱心網友回復:
根據您使用的 PHP 版本,您應該能夠在物體類中執行以下操作:
/**
* @ORM\Column(type="boolean")
*/
private $autoCreated = false;
每當創建此類的實體時,$autoCreated
將設定為false
. 所以當你嘗試持久化物件時,它會有一個默認值,false
Doctrine 會將該欄位設定為 0。
或者,您可以在建構式中顯式設定$autoCreated
為false
:
public function __construct()
{
$this->autoCreated = false;
}
請注意,您只能將第一種方法用于簡單的內置 PHP 型別或常量。對于更復雜的物件(例如 Doctrine ArrayCollection
),您需要使用建構式方法。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/503889.html