Eloquent ORM от Laravel предоставляет различные функции, упрощающие манипулирование данными и упрощающие работу с базами данных. Одной из таких функций является приведение моделей, которое позволяет вам определить, как следует преобразовывать и представлять значения атрибутов. В этой статье мы углубимся в приведения моделей Laravel и рассмотрим различные методы их использования в вашем приложении.
- Основное использование:
По умолчанию Laravel рассматривает все значения атрибутов как строки. Однако с помощью приведения моделей вы можете указать нужные типы данных для атрибутов, обеспечивая автоматическое преобразование между типами. Давайте рассмотрим модель «Пользователь» с атрибутом «Настройки», который хранится в базе данных в виде строки JSON.
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class User extends Model
{
protected $casts = [
'settings' => 'array',
];
}
Теперь, когда вы получаете доступ к атрибуту «settings», Laravel автоматически преобразует его из строки JSON в массив.
- Доступные типы приведения:
Laravel предоставляет несколько встроенных типов приведения, которые вы можете использовать для приведения моделей:
- Целое: преобразует атрибут в целое число.
- Float: преобразует атрибут в число с плавающей запятой.
- Boolean: преобразует атрибут в логическое значение.
- Массив: преобразует атрибут в массив.
- Коллекция: преобразует атрибут в коллекцию Laravel.
- Дата: преобразует атрибут в формат даты.
- DateTime: преобразует атрибут в формат даты и времени.
Вы можете указать желаемый тип приведения в свойстве $castsвашей модели.
- Пользовательское приведение:
Помимо встроенных типов приведения, Laravel позволяет вам определять пользовательское приведение с учетом ваших конкретных потребностей. Пользовательские приведения полезны, если вы хотите сериализовать и десериализовать сложные структуры данных.
namespace App\Casts;
use Illuminate\Contracts\Database\Eloquent\CastsAttributes;
class EncryptedString implements CastsAttributes
{
public function get($model, $key, $value, $attributes)
{
// Decrypt the value
}
public function set($model, $key, $value, $attributes)
{
// Encrypt the value
}
}
После этого вы сможете использовать пользовательское приведение в своей модели:
namespace App\Models;
use App\Casts\EncryptedString;
use Illuminate\Database\Eloquent\Model;
class User extends Model
{
protected $casts = [
'password' => EncryptedString::class,
];
}
- Приведение имен атрибутов:
В некоторых случаях вам может потребоваться привести атрибуты с разными именами в вашей базе данных. Этого можно добиться, указав имя атрибута и тип приведения с помощью ассоциативного массива в свойстве$casts.
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class User extends Model
{
protected $casts = [
'db_column_name' => 'boolean',
];
}
Здесь Laravel преобразует атрибут «db_column_name» в логическое значение при доступе.
Приведение моделей Laravel предоставляет удобный способ манипулирования и преобразования значений атрибутов без необходимости ручной проверки и преобразования типов. В этой статье мы рассмотрели базовое использование приведения моделей, доступные типы приведения, пользовательские приведения и имена атрибутов приведения. Использование приведения моделей может значительно расширить возможности манипулирования данными вашего приложения Laravel.