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

Метод fill

Метод fill применяется к экземпляру модели Eloquent и позволяет заполнить её атрибуты значениями из переданного массива. Первым параметром передаётся массив данных, где ключи - это имена атрибутов модели, а значения - соответствующие данные для заполнения. Метод учитывает свойства fillable и guarded модели, обеспечивая защиту от массового присваивания. Для принудительного заполнения всех полей используется метод forceFill.

Синтаксис

<?php $model->fill($attributes); ?>

Пример с заполняемыми полями

Для начала определим модель с указанием заполняемых полей:

<?php namespace AppModels; use IlluminateDatabaseEloquentModel; class Article extends Model { protected $fillable = [ 'title', 'content', 'status' ]; } ?>

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

<?php use AppModelsArticle; $article = new Article(); $res = $article->fill([ 'title' => 'Laravel Eloquent', 'content' => 'Article content', 'status' => 'draft' ]); echo $res->title; echo $res->status; ?>

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

"Laravel Eloquent" "draft"

Пример с защищёнными полями

Если в модели определено свойство guarded, указанные поля будут защищены от массового заполнения:

<?php namespace AppModels; use IlluminateDatabaseEloquentModel; class User extends Model { protected $guarded = [ 'is_admin', 'password_hash' ]; } ?>

Попробуем заполнить защищённые поля:

<?php use AppModelsUser; $user = new User(); $user->fill([ 'name' => 'John Doe', 'email' => 'john@example.com', 'is_admin' => true, 'password_hash' => 'hashed_password' ]); echo $user->name; echo $user->is_admin; ?>

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

"John Doe" ""

Как видно, защищённые поля не были заполнены, их значения остались пустыми.

Пример с сохранением после заполнения

Метод fill часто используется вместе с методом save для сохранения модели в базу данных:

<?php use AppModelsArticle; $article = new Article(); $article->fill([ 'title' => 'New Article', 'content' => 'This is a new article', 'status' => 'published' ]); $article->save(); echo $article->id; ?>

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

"5"

Пример с принудительным заполнением

Метод forceFill позволяет заполнить атрибуты, даже если они защищены правилами массового присваивания:

<?php use AppModelsUser; $user = new User(); $user->forceFill([ 'name' => 'Admin User', 'email' => 'admin@example.com', 'is_admin' => true ]); echo $user->is_admin; ?>

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

"1"

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

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