簡體   English   中英

laravel雄辯的模型強制保存?

[英]laravel eloquent model casts on save?

https://laravel.com/docs/5.4/eloquent-mutators#attribute-casting例如

protected $casts = [ 'price' => 'integer', ]; 現在,將在檢索值時進行強制轉換。 保存時,我實際上不確定$book->price = "20"會做什么,例如,很可能會保存20。

那是我的猜測,對嗎?

$book->someboolean$casts =[ 'someboolean' -> 'boolean'];

$book->someboolean = 'false'; $book->save();

$book->someboolean = '0'; $book->save();

$book->someboolean = 0; $book->save();

$book->someboolean = null; $book->save();

它會存儲什么?

$casts在保存和更新方法上不起作用。 當您從模型中獲得某些屬性時,將調用__get()toArray()toJson()

對於MySQL:如果嘗試保存“ 20”,則數據庫可以根據列類型轉換值:如果是整數,則將保存20,如果布爾值,則為true。

布爾型,布爾型:這些類型是TINYINT(1)的同義詞。 零值被認為是錯誤的。 非零值被認為是正確的。

雄辯地說,它使用流利的方法構成了SQL查詢。 $casts屬性僅在檢索時有效。 對於插入或更新,您應該檢查數據庫引擎及其轉換方式。

如果您想雄辯地使用Laravel強制轉換。 您可以添加增幅器。

public function setSomebooleanAttribute($value)
{
    $this->attributes['someboolean'] = boolval($value);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM