Преобразование данных с помощью красноречивых аксессоров и мутаторов в Laravel

RedDeveloper
24.03.2023 09:20
Преобразование данных с помощью красноречивых аксессоров и мутаторов в Laravel

Laravel поставляется с мощной функцией под названием "Eloquent Accessors and Mutators".

Эти функции позволяют вам манипулировать данными в свойствах вашей модели до того, как они будут сохранены в базе данных или получены из базы данных.

Аксессоры и мутаторы полезны, когда необходимо преобразовать данные перед их сохранением или отображением, не изменяя базового значения.

Аксессоры

Аксессор - это метод вашей модели, который вызывается, когда вы пытаетесь получить доступ к свойству модели.

Имя метода совпадает с именем свойства, но перед ним ставится слово "get".

Например, если в вашей модели есть свойство "full_name", вы можете определить метод "getFullNameAttribute", который будет вызываться при каждом обращении к свойству "full_name".

Вот пример аксессора, который возвращает полное имя пользователя:

class User extends Model
{
    public function getFullNameAttribute()
    {
        return $this->first_name . ' ' . $this->last_name;
    }
}

Затем вы можете получить доступ к полному имени пользователя, вызвав $user->full_name.

Будет вызван метод getFullNameAttribute и возвращено полное имя.

Мутаторы

Мутатор - это метод вашей модели, который вызывается, когда вы пытаетесь установить свойство модели.

Имя метода совпадает с именем свойства, но перед ним ставится слово "set".

Например, если в вашей модели есть свойство "password", вы можете определить метод "setPasswordAttribute", который будет вызываться всякий раз, когда вы попытаетесь установить свойство "password".

Вот пример мутатора, который хэширует пароль перед его сохранением в базе данных:

Затем вы можете установить пароль пользователя, вызвав $user->password = 'password'.

Будет вызван метод setPasswordAttribute, и пароль будет хэширован перед сохранением в базе данных.

class User extends Model
{
    public function setPasswordAttribute($value)
    {
        $this->attributes['password'] = Hash::make($value);
    }
}

Вы также можете использовать аксессоры и мутаторы в сочетании друг с другом.

Например, вы можете определить аксессор getFullNameAttribute и мутатор setFullNameAttribute для обработки полного имени пользователя.

В заключение следует отметить, что Eloquent Accessors и Mutators - это мощная функция Laravel, которая позволяет преобразовывать данные до того, как они будут сохранены или получены из базы данных.

Их можно использовать, чтобы сделать ваш код более чистым и удобным для сопровождения, инкапсулируя логику, связанную с манипуляцией данными в свойствах вашей модели.

Originally published at https://nativecoders.io.

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?

20.08.2023 18:21

Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в 2023-2024 годах? Или это полная лажа?".

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией

20.08.2023 17:46

В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.

Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox

19.08.2023 18:39

Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в частности, магию поплавков и гибкость flexbox.

Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest

19.08.2023 17:22

В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для чтения благодаря своей простоте. Кроме того, мы всегда хотим проверить самые последние возможности в наших проектах!

Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️

18.08.2023 20:33

Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий их языку и культуре.

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL

14.08.2023 14:49

Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип предназначен для представления неделимого значения.