Laravel: неопределенное смещение в представлении index.blade.php

В моих маршрутах этот маршрут определен как:

// app/routes.php
Route::resource('CharacterController');

Соответствующий метод в контроллере:

// app/controllers/CharacterController.php
public function index(){
    $characters = Character::all();
    $houses = House::all();

    return View::make('characters.index')->with(array('characters'=>$characters, 'houses' => $houses));
}

Наконец, по мнению:

// app/views/characters/index.blade.php
#this fires an error:
{{ $houses[$characters->house_id]->name }}

# at the same time this gives correct result: 
{{ $houses[1]->name }}

# and this IS equal to 1:
{{ $characters->house_id }}

1 ответ

Решение

Вы не можете использовать id как индекс массива для доступа к объекту с заданным идентификатором.

Поскольку у вас есть Eloquent Collection, вы можете использовать его различные функции. Одним из них является find() для получения одного элемента id

{{ $houses->find($characters->house_id)->name }}
Другие вопросы по тегам