Сначала это показалось мне безумно простым, но я не могу найти решение!

Вот моя коллекция:

Collection {#433
  #items: array:432 [
    0 => array:5 [
      "word_id" => 12218
      "name" => "ordered"
      "rank" => 12217
      "is_real" => 1
      "id" => 1
    ]
    1 => array:5 [
      "word_id" => 12097
      "name" => "one-dimensional"
      "rank" => 12096
      "is_real" => 1
      "id" => 2
    ]
    2 => array:5 [
      "word_id" => 19679
      "name" => "watery"
      "rank" => 19678
      "is_real" => 1
      "id" => 3
    ]
    .
    .
    .

Но я хочу, чтобы это было так:

Collection {#433 
  #items: array:432 [
    0 => array:5 [
      "name" => "ordered"
      "id" => 1
    ]
    1 => array:5 [
      "name" => "one-dimensional"
      "id" => 2
    ]
    2 => array:5 [
      "name" => "watery"
      "id" => 3
    ]
    .
    .
    .

Как это можно сделать с помощью коллекции laravel? Должен ли я преобразовать мою коллекцию в массив и самому выполнять манипуляции? Как?

0
Ahmad Mobaraki 28 Июл 2017 в 05:41

3 ответа

Лучший ответ
$collection = $collection->map(function ($item) {
    return array_only($item, ['id', 'name']);
});
4
fubar 28 Июл 2017 в 05:45
Мне нужно подождать 10 минут, чтобы принять ответ. Упомянул, что, поскольку вы до сих пор не задавали никаких вопросов, возможно, вы этого не знаете! 2,5 года без вопросов ?! ВАУУ !!!
 – 
Ahmad Mobaraki
28 Июл 2017 в 05:55

Или вы также можете использовать

$collection = $collection->map(function ($item) {
    return $item->only(['id', 'name'])
});

Таким образом, ваша коллекция останется в виде коллекций.

2
Solar 13 Сен 2019 в 14:43
При попытке выдает ошибку Call member function only() on array
 – 
Panji Setya Nur Prawira
4 Июн 2020 в 04:36

Или вы также можете использовать

 $collection = $collection ->map(function ($item) {
            return collect($item)->forget(['work_id','rank','is_real']);
        });
1
Grocker 8 Ноя 2019 в 07:17
2
Не размещайте просто код. Добавьте некоторую информацию к своему ответу, чтобы улучшить качество.
 – 
tobsob
7 Ноя 2019 в 12:02