Не могу использовать toArray после Filter и Pluck коллекции laravel - PullRequest
0 голосов
/ 29 января 2020

Мне нужно отобразить список меток категорий из отфильтрованной коллекции, разделенных запятой в блейд-представлениях.

Код выглядит следующим образом

{{$data->categories->filter(function ($value) {return $value->type_id == 1;})->pluck(['label'])->toArray()}};

Эта ошибка возникает при использовании toArray()

htmlspecialchars () ожидает, что параметр 1 будет строкой, задан массив

Мне нужен результат в массиве, чтобы использовать его с implode для отображения списка, разделенного запятой

{{implode(', ',$data->categories->filter(function ($value) {return $value->type_id == 1;})->pluck(['label'])->toArray())}};

Ожидаемый результат для отображения:

Car, Truck, Cheap

Коллекция

[{"id":80,"type_id":1,"label":"Car","pivot":{"data_id":6060,"category_id":80}},
{"id":45,"type_id":1,"label":"Truck","pivot":{"data_id":6060,"category_id":45}},

{"id":75,"type_id":8,"label":"Cheap","pivot":{"data_id":6060,"category_id":75}}]

Если я не использую фильтр / где коллекция, я могу использовать toArray ()

Есть идеи, почему использование filter / where collection вызывает ошибку toArray ()?

1 Ответ

0 голосов
/ 29 января 2020

Вы можете использовать toArray после pluck. Фактически вам нужно использовать его, если вы собираетесь обрабатывать результаты pluck как массив. Например, если вы выполните:

$data = Model::where({condition})->pluck();

, а затем попытаетесь использовать $data в качестве массива, например:

if (in_array($someEntity, $data) {
     //entity is in data
}

Это даст вам ошибку, вам нужно будет преобразовать pluck результат в массиве так:

$data = Model::where({condition})->pluck()->toArray();

Надеюсь, это поможет

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