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

Метод setAttribute

Метод setAttribute применяется к экземпляру модели Eloquent и позволяет установить значение для указанного атрибута. Первым параметром передаётся имя атрибута (колонки в базе данных), вторым - значение, которое нужно установить. Метод возвращает текущий экземпляр модели, что позволяет использовать цепочки вызовов. При установке значения метод учитывает мутаторы (сеттеры) модели, а также преобразования типов, указанные в свойстве $casts.

Синтаксис

<?php $model->setAttribute($key, $value); ?>

Пример

Давайте создадим новую модель и установим значение атрибута 'title':

<?php use AppModelsArticle; $article = new Article(); $article->setAttribute('title', 'New article'); echo $article->title; ?>

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

"New article"

Обратите внимание, что установить значение атрибута можно и напрямую через свойство модели, так как метод setAttribute вызывается автоматически через магический метод __set. То есть записи $article->title = 'New article' и $article->setAttribute('title', 'New article') эквивалентны.

Пример

Давайте установим несколько атрибутов модели с помощью цепочки вызовов:

<?php use AppModelsArticle; $article = new Article(); $article->setAttribute('title', 'Important news') ->setAttribute('content', 'Detailed content') ->setAttribute('status', 'published'); $res = [ 'title' => $article->title, 'content' => $article->content, 'status' => $article->status, ]; print_r($res); ?>

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

[ "title" => "Important news", "content" => "Detailed content", "status" => "published", ]

Пример

Давайте используем метод setAttribute с моделью, у которой есть мутатор для атрибута 'slug':

<?php namespace AppModels; use IlluminateDatabaseEloquentModel; class Article extends Model { protected $fillable = ['title', 'slug', 'content']; public function setSlugAttribute($value) { $this->attributes['slug'] = str($value)->slug(); } } ?>
<?php use AppModelsArticle; $article = new Article(); $article->setAttribute('title', 'Hello World'); $article->setAttribute('slug', 'Hello World'); echo $article->slug; ?>

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

"hello-world"

Пример

Давайте рассмотрим, как метод setAttribute работает с преобразованиями типов:

<?php namespace AppModels; use IlluminateDatabaseEloquentModel; class User extends Model { protected $casts = [ 'is_admin' => 'boolean', 'age' => 'integer', 'email_verified_at' => 'datetime', ]; } ?>
<?php use AppModelsUser; $user = new User(); $user->setAttribute('is_admin', '1'); $user->setAttribute('age', '25'); $user->setAttribute('email_verified_at', '2024-01-15 12:00:00'); $res = [ 'is_admin' => $user->is_admin, 'age' => $user->age, 'email_verified_at' => $user->email_verified_at, ]; print_r($res); ?>

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

[ "is_admin" => true, "age" => 25, "email_verified_at" => "2024-01-15 12:00:00", ]

Пример

Давайте используем метод setAttribute для обновления существующей модели:

<?php use AppModelsArticle; $article = Article::find(1); $article->setAttribute('title', 'Updated title'); $article->setAttribute('status', 'published'); $article->save(); echo $article->title . ' - ' . $article->status; ?>

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

"Updated title - published"

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

  • метод getAttribute,
    который получает значение атрибута модели
  • метод fill,
    который массово заполняет атрибуты модели
  • метод forceFill,
    который массово заполняет атрибуты модели без защиты
  • метод save,
    который сохраняет модель в базу данных
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить