Добавить новое поле в модель

public function fields()
{
  $fields = parent::fields();

  // удаляем поля, содержащие конфиденциальную информацию
  unset($fields['auth_key'], $fields['password_hash'], $fields['password_reset_token']);

  return $fields;
}

в коде выше удаляются указанные поля методом unset(). Есть ли метод типа set() который добавляет новое поле?
Если сделать так:

$fields = ['requests_count'];

то возвращает только поле requests_count.
Мне надо чтобы requests_count добавился к уже существующим полям


Ответы (1 шт):

Автор решения: Yury Plinto

Естественно, $fields = ['requests_count']; заменяет всё содержимое массива на requests_count. Вы ведь присваиваете переменной $field новый массив. Чтобы добавить новое поле в массив нужно использовать такой синтаксис: $fields[] = 'requests_count';. Это добавит элемент в конец массива (с числовым индексом, который следует за наибольшим существующим индексом в массиве).


Если нужно добавить сразу несколько элементов, то можно использовать функцию array_push. Но для добавления в массив только одного элемента лучше не использовать функции, как советуется в документации php (PHP: array_push - Manual).

→ Ссылка