Атрибут hidden
Атрибут hidden модели Eloquent определяет массив полей,
которые должны быть скрыты при преобразовании модели в массив
или JSON. Это полезно для защиты конфиденциальных данных,
таких как пароли или токены доступа. Атрибут применяется
при вызове методов toArray, toJson или при
возврате модели из контроллера.
Синтаксис
<?php
class Model extends Model
{
protected $hidden = ['field1', 'field2', 'field3'];
}
?>
Пример
Давайте скроем поле 'password' в модели User:
<?php
namespace AppModels;
class User extends Model
{
protected $hidden = [
'password',
'remember_token',
];
}
?>
При преобразовании модели в массив эти поля не будут включены:
<?php
use AppModelsUser;
$user = User::find(1);
$res = $user->toArray();
print_r($res);
?>
Результат выполнения кода:
Array
(
[id] => 1
[name] => John Doe
[email] => john@example.com
)
Пример
Использование атрибута hidden вместе с другими полями:
<?php
namespace AppModels;
class Article extends Model
{
protected $hidden = [
'views',
'slug',
'created_at',
'updated_at',
];
}
?>
Теперь при получении статей скрытые поля не будут видны:
<?php
use AppModelsArticle;
$articles = Article::all();
$res = $articles->toArray();
print_r($res);
?>
Результат выполнения кода:
Array
(
[0] => Array
(
[id] => 1
[title] => article 1
[content] => text
)
[1] => Array
(
[id] => 2
[title] => article 2
[content] => text
)
)
Пример
Временное скрытие полей с помощью метода makeHidden:
<?php
use AppModelsUser;
$user = User::find(1);
$user->makeHidden(['email', 'name']);
$res = $user->toArray();
print_r($res);
?>
Результат выполнения кода:
Array
(
[id] => 1
)
Пример
Влияние атрибута hidden на JSON-ответ в контроллере:
<?php
namespace AppHttpControllers;
use AppModelsUser;
class UserController extends Controller
{
public function index()
{
$users = User::all();
return response()->json($users);
}
}
?>
Ответ API будет содержать только видимые поля:
[
{"id":1,"name":"John Doe","email":"john@example.com"},
{"id":2,"name":"Jane Smith","email":"jane@example.com"}
]
Смотрите также
-
атрибут
fillable,
который определяет поля для массового заполнения -
атрибут
guarded,
который определяет поля, защищённые от массового заполнения -
метод
makeVisible,
который делает скрытые поля видимыми -
метод
toArray,
который преобразует модель в массив