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

Метод makeVisible

Метод makeVisible применяется к экземпляру модели Eloquent и позволяет временно сделать видимыми атрибуты, которые были скрыты с помощью свойства $hidden в модели. Метод принимает один или несколько атрибутов в качестве аргументов и возвращает тот же экземпляр модели с изменённой видимостью. Это полезно, когда нужно отобразить скрытые поля в конкретном месте, не изменяя настройки модели глобально.

Синтаксис

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

Метод принимает один или несколько атрибутов в виде строки или массива строк.

Пример

Допустим, у нас есть модель User со скрытыми полями 'password' и 'email_verified_at' в свойстве $hidden. Давайте временно сделаем поле 'password' видимым для одного пользователя:

<?php namespace AppModels; use IlluminateDatabaseEloquentModel; class User extends Model { protected $hidden = [ 'password', 'email_verified_at', ]; } ?>
<?php use AppModelsUser; Route::get('/user/{id}', function ($id) { $user = User::find($id); $user->makeVisible('password'); return $user->toArray(); }); ?>

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

[ "id" => 1, "name" => "John Doe", "email" => "john@example.com", "password" => "hashed_password_123", "created_at" => "2026-01-15 10:00:00", "updated_at" => "2026-01-15 10:00:00" ]

Как видно из результата, поле 'password' стало доступным в массиве, хотя поле 'email_verified_at' по-прежнему скрыто.

Пример

Метод makeVisible может принимать массив атрибутов для одновременного отображения нескольких полей:

<?php use AppModelsUser; Route::get('/user/{id}', function ($id) { $user = User::find($id); $user->makeVisible(['password', 'email_verified_at']); return $user->toArray(); }); ?>

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

[ "id" => 1, "name" => "John Doe", "email" => "john@example.com", "password" => "hashed_password_123", "email_verified_at" => "2026-01-15 09:30:00", "created_at" => "2026-01-15 10:00:00", "updated_at" => "2026-01-15 10:00:00" ]

Теперь оба скрытых поля стали видимыми при преобразовании модели в массив.

Пример

Метод makeVisible можно вызывать цепочкой для последовательного добавления атрибутов:

<?php use AppModelsUser; Route::get('/user/{id}', function ($id) { $user = User::find($id); $user->makeVisible('password')->makeVisible('email_verified_at'); return $user->toArray(); }); ?>

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

[ "id" => 1, "name" => "John Doe", "email" => "john@example.com", "password" => "hashed_password_123", "email_verified_at" => "2026-01-15 09:30:00", "created_at" => "2026-01-15 10:00:00", "updated_at" => "2026-01-15 10:00:00" ]

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

Пример

Важно отметить, что makeVisible работает только на уровне экземпляра модели и не влияет на другие экземпляры или будущие запросы. Вот пример с двумя пользователями:

<?php use AppModelsUser; Route::get('/users', function () { $user1 = User::find(1); $user2 = User::find(2); $user1->makeVisible('password'); $res = [ 'user1' => $user1->toArray(), 'user2' => $user2->toArray(), ]; return $res; }); ?>

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

[ "user1" => [ "id" => 1, "name" => "John Doe", "email" => "john@example.com", "password" => "hashed_password_123", "created_at" => "2026-01-15 10:00:00", "updated_at" => "2026-01-15 10:00:00" ], "user2" => [ "id" => 2, "name" => "Jane Smith", "email" => "jane@example.com", "created_at" => "2026-01-15 11:00:00", "updated_at" => "2026-01-15 11:00:00" ] ]

Как видно из примера, поле 'password' отображается только для $user1, а $user2 остаётся без изменений.

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

  • метод makeHidden,
    который временно скрывает атрибуты модели
  • метод toArray,
    который преобразует модель в массив
  • метод toJson,
    который преобразует модель в JSON
  • свойство $hidden,
    которое определяет скрытые атрибуты модели
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить