Laravel: запрос по идентификатору - PullRequest
0 голосов
/ 19 февраля 2019

Я столкнулся с очень простой проблемой, но не могу решить.

Две таблицы: car_models и gear_type.Структурировано так:

Model table

Gear table

На главной странице я должен показать все моделии какой автомобиль с его описанием передач.Итак, я делаю:

$modelos = Modelo::all();
foreach ($modelos as $modelo) {
    $cambio = Cambio::where('id', '=', $modelo->cambio_id)->pluck('descricao');
}
// return $cambio;
return view('home', compact('banners', 'modelos', 'cambio'));

Но вид показывает:

ErrorException (E_ERROR)
Undefined offset: 1 (View: /Users/marcellopato/Sites/primorossiseminovos/resources/views/home.blade.php)
Previous exceptions
Undefined offset: 1 (0)

... и он должен показывать тип шестерни в поле, указанном на рисунке ниже.

Should show: 5 gear, i.e.

Ответы [ 2 ]

0 голосов
/ 20 февраля 2019

Учитывая, что у вас есть внешний ключ cambio_id внутри modelos таблицы, ваши отношения в модели должны быть:

class Modelo extends Model
{
    public function cambio()
    {
        return $this->belongsTo(‘App\Cambio’);
    }
}

class Cambio extends Model
{
    public function cambio()
    {
        return $this->hasOne(‘App\Modelo’);
    }
}

Тогда вы можете сделать:

$modelos = Modelo::with(‘cambio’)->get();

with()это энергичная загрузка, которая получает cambio для каждого modelo экземпляра.

Тогда вы можете сделать:

@foreach($modelos as $modelo)
    {{ $modelo->cambio->descricao }}
@endforeach

Каким-то образом я чувствую, что ваша структура таблицы может быть обновлена ​​и отношения могут быть изменены, но это также зависит от бизнес-кейса.

0 голосов
/ 19 февраля 2019

Определите отношение между двумя моделями:

class Modelo extends Model
{
    public function cambio()
    {
        return $this->belongsTo(‘App\Cambio’);
    }
}

Загрузите отношение при запросе Modelo:

$modelos = Modelo::with(‘cambio’)->get();

В своем представлении (блейд) вы можете отобразить описание передачи следующим образом:

@foreach($modelos as $modelo)
    {{ $modelo->cambio->descricao }}
@endforeach

Подробнее о соотношении моделей можно прочитать здесь: docs .

...