В Laravel для скрытия полей в коллекции можно использовать метод map()
в сочетании с методом forget()
.
Для начала, предположим, у вас есть коллекция моделей User и вы хотите скрыть поле "password". Вот как можно это сделать:
$users = User::all(); $hiddenFields = ['password']; $users = $users->map(function ($user) use ($hiddenFields) { foreach ($hiddenFields as $field) { $user->forget($field); } return $user; });
В этом примере сначала мы получаем все модели User в коллекции. Затем мы создаем массив $hiddenFields
, содержащий имена полей, которые нам нужно скрыть (в данном случае это только поле "password"). Далее мы используем метод map()
для прохода по каждой модели User в коллекции.
Внутри каждого итератора мы используем метод forget()
, чтобы удалить каждое поле из массива $hiddenFields
из модели User. Метод forget()
удаляет указанный элемент из модели. После этого мы возвращаем измененную модель обратно в коллекцию.
Теперь, если вы выведете коллекцию пользователей, поле "password" не будет включено в результат:
$users->each(function ($user) { echo $user->name; // другие поля, кроме "password" });
Таким образом, вы можете легко скрыть определенные поля из коллекции моделей в Laravel.