красноречивая модель laravel бросает на спасении?

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();

что он будет хранить?

0

Решение

$casts не работает с методами сохранения и обновления. Это вызов, когда вы получаете свойство из модели: __get(), toArray() или же toJson(),

Для MySQL: если вы попытаетесь сохранить «20», база данных может преобразовать значение в зависимости от типа столбца: если это целое число — 20 будет сохранено, если логическое — true.

Bool, Boolean: Эти типы являются синонимами для TINYINT (1). Нулевое значение считается ложным. Ненулевые значения считаются истинными.

3

Другие решения

Все красноречиво это формирует SQL-запрос, используя беглые методы. $casts свойство работает только при получении. Для вставки или обновления вы должны проверить ядро ​​базы данных и то, как оно их преобразует.

Если вы хотите форсировать касты с помощью Laravel, используйте eloquent. Вы можете добавить мутаторы.

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

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector