Метод makeHidden
Метод makeHidden применяется к экземпляру модели Eloquent
и позволяет временно скрыть один или несколько атрибутов
при преобразовании модели в массив или JSON-строку.
В отличие от свойства hidden, который действует
на все экземпляры модели, makeHidden влияет
только на конкретный экземпляр.
Первым параметром передаётся имя атрибута или массив имён.
Метод возвращает тот же экземпляр модели.
Синтаксис
<?php
$model->makeHidden($attributes);
?>
Пример
Давайте скроем поле 'password' у модели пользователя:
<?php
use AppModelsUser;
$user = User::find(1);
$user->makeHidden('password');
$res = $user->toArray();
print_r($res);
?>
Результат выполнения кода:
[
"id" => 1,
"name" => "user",
"email" => "user@example.com"
]
Пример
Давайте скроем сразу несколько полей у модели статьи:
<?php
use AppModelsArticle;
$article = Article::find(1);
$article->makeHidden(['internal_id', 'draft_content']);
$res = $article->toJson();
echo $res;
?>
Результат выполнения кода:
"{"id":1,"title":"article","content":"text","status":"published"}"
Пример
Скрытие атрибутов при преобразовании в JSON через коллекцию:
<?php
use AppModelsUser;
$users = User::all();
$filtered = $users->each(function ($user) {
$user->makeHidden(['password', 'remember_token']);
});
$res = $filtered->toJson();
echo $res;
?>
Результат выполнения кода:
"[{"id":1,"name":"user1","email":"user1@example.com"},{"id":2,"name":"user2","email":"user2@example.com"}]"
Пример
Комбинирование makeHidden с другими методами модели:
<?php
use AppModelsArticle;
$article = Article::find(5);
$article->makeHidden('views_count')
->append('full_text')
->load('comments');
$res = $article->toArray();
print_r($res);
?>
Результат выполнения кода:
[
"id" => 5,
"title" => "article",
"content" => "text",
"full_text" => "full text content",
"comments" => [...]
]
Смотрите также
-
метод
makeVisible,
который делает скрытые атрибуты видимыми -
метод
toArray,
который преобразует модель в массив -
метод
toJson,
который преобразует модель в JSON-строку -
атрибут
hidden,
который определяет скрытые атрибуты на уровне модели