Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

In a Laravel 5 Collection how do you return an array of objects instead of an array of arrays?

I am using Laravel 5 and a Blade template. In a view I want to iterate over an array of Model objects, not an array of arrays. If I did want to iterate over an array of arrays I would do the following, which works as expected:

$models = Foo::where('id', '>', 5)->get();
return view('home.index', ['models' => $models->toArray()]);

However I want an array of objects with accessible properties. If I were to run:

$models = Foo::where('id', '>', 5)->get();
return view('home.index', ['models' => $models->all()]);

The var_dump would look like this:

object(Illuminate\Support\Collection)[164]
  protected 'items' => 
    array (size=3)
      0 => 
        object(App\Foo)[172]
          public 'id' => null
          public 'foo' => null
          private 'created_at' => null
          private 'updated_at' => null
          protected 'connection' => null
          protected 'table' => null
          protected 'primaryKey' => string 'id' (length=2)
          protected 'perPage' => int 15
          public 'incrementing' => boolean true
          public 'timestamps' => boolean true
          protected 'attributes' => 
            array (size=4)
              'id' => int 1
              'foo' => string 'Foo!' (length=4)
              'created_at' => string '2015-02-27 15:44:09' (length=19)
              'updated_at' => null

Not only is the Model in an 'items' object the properties are not filled.

In a view I would like to do something like this:

@foreach ($models as $model)
    @include('_partial') {
        'id' => $model->id,
        'foo' => $model->foo,
    }
@endforeach

How do I get an array of Models instead of an array of an array of Models?

like image 853
ebakunin Avatar asked Feb 28 '15 01:02

ebakunin


1 Answers

According to the Docs:

$array = $collection->all();

"The all method returns the underlying array represented by the collection."

like image 186
windsor Avatar answered Sep 18 '22 14:09

windsor