[英]Can we set laravel enum column to be unique
枚舉列可以是唯一的嗎?
我的表中有 5 種不同的貨幣,其中只有一種必須是默認貨幣,我可以為該列設置唯一嗎?
$table->enum('default_currency', ['yes', 'no'])->unique();
不,您不能使用UNIQUE INDEX
。 它適用於兩行,但在第三行它會失敗,因為有效值只有兩個。
這個邏輯需要手動做,很多地方都可以做。 我個人喜歡在模型觀察者中做這種邏輯,這樣你就可以觀看saving
事件。 邏輯是這樣的:
default_currency
設置為 true,則執行如下查詢: Currency::whereDefaultCurrency(true)->update(["default_currency"=>false])
這樣,您將始終擁有一種單一貨幣,並且default_currency
設置為true
。
CurrencyObserver
示例:
class CurrencyObserver {
public function saving(Currency $currency) {
if ($currency->isDirty('default_currency') && $currency->default_currency) {
Currency::where('default_currency', true)->update(['default_currency' => false]);
}
return true;
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.