laravel eloquent model cast su save?

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

protected $casts = [ 'price' => 'integer', ]; ora questo verrà lanciato quando si recupera il valore. Al momento del salvataggio, in realtà non sono sicuro di cosa farà $book->price = "20" , ad esempio con molta probabilità risparmierà 20.

Questa è la mia ipotesi, è giusto?

Cosa sarà $book->someboolean con $casts =[ 'someboolean' -> 'boolean']; $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();

cosa memorizzerà?

$casts non funziona sui methods di salvataggio e aggiornamento. È una chiamata quando si ottengono alcune properties; dal model: __get() , toArray() o toJson() .

Per MySQL: se provi a salvare "20", il database può convertire il valore in base al tipo di colonna: se è integer – 20 verrà salvato, se boolean – true.

Bool, Boolean: questi tipi sono sinonimi per TINYINT (1). Un valore pari a zero è considerato falso. I valori diversi da zero sono considerati veri.

Tutto eloquente forma la query SQL utilizzando methods fluenti. La properties; $casts funziona solo durante il recupero. Per l'inserimento o l'aggiornamento, è necessario controllare il motore del database e il modo in cui li trasmette.

Se vuoi forzare i lanci con Laravel usando eloquente. Puoi aggiungere mutatori.

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