Laravel: получение атрибутов модели по массиву ключей

#php #arrays #laravel #model #attributes

#php #массивы #laravel #Модель #атрибуты

Вопрос:

Я пытаюсь получить доступ к атрибутам модели с помощью массива ключей. Желаемая функциональность будет работать примерно так $model->getAttribute('name') , но принимать массив вместо строки.

Допустим, у нас была модель с именем атрибутов ‘A’, возрастом 2 и blood_type ‘B’.

 $attributesToPull = ['name', 'age'];
$model->getAttributes($attributesToPull);

// returns ['A', 2]
  

Я проверил документы Laravel и не могу найти ничего подходящего.

Результаты не обязательно должны поступать прямо из модели, их можно перенести в их собственный ассоциативный массив, используя $model->getAttributes() , а затем использовать встроенную функцию PHP array, например, array_intersect для фильтрации результатов, но даже тогда я не могу найти функцию, которая позволит мне фильтровать ассоциативный массив с помощью индексированного массива.

Кто-нибудь знает, как я мог бы это сделать, в идеале без использования цикла или обратного вызова? Ответ может быть довольно открытым, он может возвращать коллекцию или массив и использовать либо ассоциативный массив атрибутов модели, либо вызывать функцию для самой модели.

Ответ №1:

Модель имеет only метод:

 $model->only($attributesToPull);
  

Комментарии:

1. боже мой, я знал, что там что-то есть! ха-ха. Я использовал эту функцию раньше и совершенно забыл об этом, я искал в документах ключи или атрибуты. Я надеюсь, что будущие работодатели этого не увидят!