«Приведение моделей Laravel» относится к функции PHP-фреймворка Laravel, которая позволяет вам указывать тип данных определенных атрибутов ваших моделей Eloquent. Эта функция помогает автоматически преобразовывать значения атрибутов из базы данных в определенные типы данных при их извлечении и наоборот при их сохранении обратно в базу данных.
Вот некоторые методы, которые вы можете использовать для определения приведения моделей в Laravel, а также примеры кода:
Свойство
$casts: приведения можно определить непосредственно в свойстве$castsмодели в виде массива, где ключами являются имена атрибутов и значения. — желаемые типы данных.
class User extends Model
{
protected $casts = [
'is_admin' => 'boolean',
'age' => 'integer',
'settings' => 'array',
];
}
В приведенном выше примере атрибут is_adminбудет автоматически преобразован в логическое значение, атрибут age— в целое число, а settingsатрибут массива.
-
Метод
castAs: вы также можете использовать методcastAsдля индивидуального указания типа данных атрибута.
class User extends Model
{
protected $fillable = ['name', 'email', 'address'];
protected $casts = [];
public function __construct(array $attributes = [])
{
parent::__construct($attributes);
$this->castAs('address', 'json');
}
}
В этом примере атрибут addressбудет преобразован в формат JSON.
- Пользовательские классы приведения: Laravel позволяет вам определять ваши собственные классы приведения, что дает вам больше гибкости в обработке приведения атрибутов. Вы можете создать собственный класс приведения, реализовав интерфейс
Illuminate\Contracts\Database\Eloquent\CastsAttributes.
use Illuminate\Contracts\Database\Eloquent\CastsAttributes;
class JsonCast implements CastsAttributes
{
public function get($model, $key, $value, $attributes)
{
return json_decode($value, true);
}
public function set($model, $key, $value, $attributes)
{
return json_encode($value);
}
}
class User extends Model
{
protected $casts = [
'settings' => JsonCast::class,
];
}
В приведенном выше примере атрибут settingsбудет преобразован в формат JSON с использованием специального класса JsonCast.