РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
166 of 1392 menu

Атрибут casts

Атрибут casts модели Eloquent определяет преобразование типов данных для атрибутов модели. При получении данных из базы они автоматически приводятся к указанному типу, а при сохранении - обратно к типу, понятному СУБД. Основные типы преобразований: 'integer', 'boolean', 'array', 'object', 'datetime' и другие.

Синтаксис

Определение атрибута casts в модели:

<?php namespace AppModels; use IlluminateDatabaseEloquentModel; class Article extends Model { protected $casts = [ 'column_name' => 'type', 'is_active' => 'boolean', 'settings' => 'array', ]; } ?>

Пример

Давайте создадим модель 'Article' с полями 'views' (integer), 'is_published' (boolean) и 'options' (json) и настроим преобразование типов:

<?php namespace AppModels; use IlluminateDatabaseEloquentModel; class Article extends Model { protected $fillable = [ 'title', 'views', 'is_published', 'options', ]; protected $casts = [ 'views' => 'integer', 'is_published' => 'boolean', 'options' => 'array', 'created_at' => 'datetime', ]; } ?>

Пример

Теперь при получении данных из базы все преобразования выполнятся автоматически. Посмотрим, что произойдёт при извлечении статьи:

<?php use AppModelsArticle; use IlluminateSupportFacadesRoute; Route::get('/article', function () { $article = Article::find(1); var_dump($article->views); // int var_dump($article->is_published); // bool var_dump($article->options); // array var_dump($article->created_at); // DateTimeInterface }); ?>

Результат выполнения кода:

int(100) bool(true) array(2) { ["theme"]=> string(4) "dark" ["lang"]=> string(2) "ru" } object(IlluminateSupportCarbon)#28 (1) { ["date"]=> string(26) "2024-01-15 10:30:00.000000" }

Пример

При сохранении данных модель автоматически приведёт значения обратно к типам, понятным базе данных:

<?php use AppModelsArticle; use IlluminateSupportFacadesRoute; Route::post('/article', function () { $article = new Article(); $article->title = 'New Article'; $article->views = '150'; // string to integer $article->is_published = '1'; // string to boolean $article->options = ['theme' => 'light', 'lang' => 'en']; // array to json $article->save(); $res = $article->toArray(); echo json_encode($res); }); ?>

Результат выполнения кода:

{"id":2,"title":"New Article","views":150,"is_published":true,"options":{"theme":"light","lang":"en"},"created_at":"2024-01-15 10:35:00","updated_at":"2024-01-15 10:35:00"}

Смотрите также

  • атрибут fillable,
    который определяет поля, доступные для массового заполнения
  • атрибут hidden,
    который скрывает поля при преобразовании модели в массив или JSON
  • атрибут appends,
    который добавляет вычисляемые поля при преобразовании в массив
  • атрибут timestamps,
    который управляет автоматическим заполнением полей created_at и updated_at
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить