Получить только некоторые поля из массива в запросах Laravel - PullRequest
0 голосов
/ 14 января 2019

На входе у меня есть такой массив:

array:1 [
  "prizes" => array:1 [
    1 => array:2 [
      "prize_id" => "1"
      "priority" => "1"
      "some_fields" => "some_value"
    ]
  ]
]

В контроллере я пытаюсь получить только два поля:

$request->only([
   'prizes.*.priority',
   'prizes.*.prize_id'
]);

но я должен получить это:

array:1 [
  "prizes" => array:1 [
    "*" => array:2 [
      "priority" => array:1 [
        0 => "1"
      ]
      "prize_id" => array:1 [
        0 => "1"
      ]
    ]
  ]
]

Как получить массив с необходимыми полями?

1 Ответ

0 голосов
/ 14 января 2019

В результате вы получаете массив, потому что вы используете .*., то есть получить ВСЕ приоритеты для призов, поэтому вместо этого он возвращает массив.

Если вы используете точечную запись, вы получите доступ к единственному приоритету для приза.

Вот так:

prizes.priority

Если вы хотите проверить КАЖДЫЙ приз, который вы получите, вы будете использовать *. перед раздачей для доступа к каждому массиву, например:

*.prizes.priority

Редактировать: немного больше информации здесь https://laravel.com/docs/master/validation#validating-arrays

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...