我來自Rails背景,我正在玩Lavaral 5,我做了一個CartItem
模型,默認情況下所有列應該是NOT NULL
。但是,如果我沒有指定某些屬性,比如說:user_id
,Laravel會爲我插入0
,我不知道這是屬性還是錯誤,因爲此行爲會隱藏一些缺陷或錯誤。防止Laravel 5在將記錄插入到MySQL時隱式分配默認值
如果我忘記分配任何NOT NULL屬性,我期望從MySQL獲得完整性約束違規,但Laravel絕不會讓它發生。如果Laravel將缺省值插入到NOT NULL
列中,那麼甚至將db列標記爲NOT NULL
又有什麼意義,該框架無論如何都無法保護這個完整性。我想一定有辦法輕輕地禁用此功能,請告訴我路徑,謝謝。
更多細節:
我CartItem
表看起來像這樣:
public function up()
{
Schema::create('cart_items', function(Blueprint $table)
{
$table->increments('id');
$table->integer('user_id');
$table->integer('product_id');
$table->decimal('unit_price', 11, 2);
$table->integer('quantity');
$table->decimal('subtotal', 11, 2);
$table->timestamps();
$table->softDeletes();
$table->index('user_id');
$table->index('product_id');
});
}
和廷克我可以這樣做:
>>> \App\CartItem::create([])
=> {
updated_at: "2015-06-21 06:57:31",
created_at: "2015-06-21 06:57:31",
id: 8
}
這導致在一排在我的分貝與所有NOT NULL
列設置爲0或0.00,我檢查了我的分貝,所有這些列設置爲非空,默認爲None
。
據我所知,laravel沒有指定默認值。它的數據庫分配了默認值。你重新檢查你的數據庫? – Salar
切勿使用默認值。永遠 – Drew
+1 @Salar,我不認爲Laravel會分配默認值。如果您嘗試在不接受空值的列中插入空值,則會引發SQL錯誤。 德魯皮爾斯你爲什麼這麼說?默認值提供了某種回退,並保護您的應用程序不會拋出錯誤/異常。 –