简体   繁体   中英

Convert Collection to Array with I=ID in Laravel

I am beginner php developer. I have small problem with my array. I use in my project Laravel 7 I have this code:

$items = collect($discount->products->toArray());

It's result me:

Illuminate\Support\Collection {#1783 ▼
  #items: array:2 [▼
    0 => array:17 [▼
      "id" => 1
      "product_category_id" => 5
      "image_id" => null
      "vat_type_id" => 1
      "name" => "Produkt 1"
      "slug" => "produkt-1"
      "lead" => "<p>fewferfer</p>"
      "description" => "<p>&nbsp;</p>"
      "price" => "123.00"
      "loyalty_program_points_price" => 2
      "min_student_level" => null
      "marked_as_available_at" => "2020-09-30T11:45:51.000000Z"
      "deactivated_at" => null
      "created_at" => "2020-09-30T11:45:23.000000Z"
      "updated_at" => "2020-09-30T11:45:51.000000Z"
      "deleted_at" => null
      "pivot" => array:3 [▶]
    ]
    1 => array:17 [▼
      "id" => 2
      "product_category_id" => 5
      "image_id" => null
      "vat_type_id" => 1
      "name" => "Produkt 2"
      "slug" => "produkt-2"
      "lead" => "<p>&nbsp;</p>"
      "description" => "<p>fergfer</p>"
      "price" => "21.00"
      "loyalty_program_points_price" => 3
      "min_student_level" => null
      "marked_as_available_at" => "2020-09-30T11:45:38.000000Z"
      "deactivated_at" => null
      "created_at" => "2020-09-30T11:45:38.000000Z"
      "updated_at" => "2020-09-30T11:45:38.000000Z"
      "deleted_at" => null
      "pivot" => array:3 [▶]
    ]
  ]
}

I need convert it to this result:

Array{
    1 => 1 (id)
    2 => (id)
}

How can I make it? I need array with only id values

Collections have the pluck method , which allows you to grab all the values of a specific key. To get all of the ids, you'd just need to do

$ids = $items->pluck('id')->all();

If you want them to have the same key as the id as well, pass that as the second parameter

$ids = $items->pluck('id', 'id')->all();

As a note, if products is a relation, then it's already a collection. You do not need to convert it to an array, then back to a collection:

$product_ids = $discount->products->pluck('id')->all();

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM