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

Метод forceFill

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

Синтаксис

<?php $model->forceFill(array $attributes); ?>

Пример

Давайте создадим модель User с защищённым полем 'is_admin' и попробуем заполнить его с помощью forceFill:

<?php namespace AppModels; use IlluminateDatabaseEloquentModel; class User extends Model { protected $guarded = ['is_admin']; protected $fillable = ['name', 'email']; } ?>
<?php namespace AppHttpControllers; use AppModelsUser; class UserController extends Controller { public function index() { $user = new User(); $user->forceFill([ 'name' => 'John Doe', 'email' => 'john@example.com', 'is_admin' => 1 ]); $res = $user->save(); echo $res; } } ?>

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

true

Пример

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

<?php namespace AppHttpControllers; use AppModelsUser; class UserController extends Controller { public function index() { $user = User::find(1); $user->forceFill([ 'name' => 'Jane Doe', 'is_admin' => 1 ]); $res = $user->save(); echo $res; } } ?>

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

true

Пример

Сравним поведение fill и forceFill при работе с защищёнными атрибутами:

<?php namespace AppHttpControllers; use AppModelsUser; class UserController extends Controller { public function index() { $user1 = new User(); $user1->fill([ 'name' => 'Alice', 'email' => 'alice@example.com', 'is_admin' => 1 ]); echo $user1->is_admin ?? 'null'; $user2 = new User(); $user2->forceFill([ 'name' => 'Bob', 'email' => 'bob@example.com', 'is_admin' => 1 ]); echo $user2->is_admin; } } ?>

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

"null" "1"

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

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