7

I wanted to have the result with only the values not with the table column name in Laravel 4.2. For example,

$recs = DB::table('table_name')
        ->select('id', 'title')
        ->get();

the result is

array(2) {
  [0]=>
  object(stdClass)#863 (2) {
    ["id"]=>
    int(2)
    ["title"]=>
    string(8) "my title"
  }
  [1]=>
  object(stdClass)#862 (2) {
    ["id"]=>
    int(3)
    ["title"]=>
    string(10) "my title 2"
  }
}

but I want to have only the result NOT the column name, like

[
  2,
  "my title"
],
[
  3,
  "my title 2"
]

yes, I can make it by looping the result and make new array without column name. But is there are any way to get the result in this fashion using Laravel ?

user2609021
  • 681
  • 2
  • 11
  • 30

4 Answers4

9

Try

$recs = DB::table('table_name')->pluck('id', 'title');
dd($recs->all());
EddyTheDove
  • 12,979
  • 2
  • 37
  • 45
1

You can use the map() and the array_values() methods:

$recs->map(function($i) {
    return array_values((array)$i);
})

I'm not sure about Laravel 4.2, but I've just tested it and it works perfectly in Laravel 5.3. If it doesn't work in 4.2, use the native array_map() function instead.

Alexey Mezenin
  • 158,981
  • 26
  • 290
  • 279
  • 1
    That is the only (nearly) correct answer for what I know. You'll just need to do `return array_values($i->toArray());` to make use of array_values. That being said I'm really interested in use case for this (converting human-readable keys into indexes). – DevK Mar 23 '17 at 16:00
  • @devk I've tested it too and since OP is using Query Builder here, `toArray()` will return an error. At least in 5.3 (not sure about 4.2 though). I've edited my code to cast objects to arrays. I've copied wrong code first. Thanks for mentioning that. – Alexey Mezenin Mar 23 '17 at 16:03
1

Reference

Try $recs->flatten()->all()

Update

Since your $recs looks like an array from your error. Try converting to collection. I hope this will work on v4.2

$recsCollection = new \Illuminate\Database\Eloquent\Collection($recs);
$recsCollection->flatten()->all();
Saumini Navaratnam
  • 8,439
  • 3
  • 42
  • 70
1

DB::table('table_name')->all()->lists('id', 'title')->toArray()

Referance: Retrieving A List Of Column Values

Preshan Pradeepa
  • 698
  • 14
  • 31