Как получить доступ к отношениям в Laravel

Я знаю, что название вопроса не очень понятно, но, пожалуйста, прочитайте полный вопрос, так как мне нужна помощь с этим.

У меня есть три стола …

  • Предложения
  • Транспортные средства
  • Планка

Отношения примерно такие …

Offer.php

public function vehicle () {
return $this->belongsTo(Vehicle::class);
}

Vehicle.php

public function trims () {
return $this->hasMany(Trim::class);
}

public function offers () {
return $this->hasMany(Offer::class);
}

Trim.php

public function vehicle () {
return $this->belongsTo(Vehicle::class);
}

В одном предложении я могу получить доступ $offer->vehicle но как я могу получить доступ к комплектациям этого автомобиля? Я пробовал это $offer->vehicle->trimsи это не работает. Это должно работать, потому что уравновешивания связаны с транспортным средством.

Благодарю.

0

Решение

Я пытался это $ offer-> vehicle-> trims, это не работает.

Что значит «не работает»?
trims() не вернет ни одного экземпляра, но итератор, который вы должны перебрать или получить доступ соответствующим образом.
Проверьте: https://laravel.com/docs/5.5/eloquent-relationships#one-to-many

$comments = App\Post::find(1)->comments;

foreach ($comments as $comment) {
//
}
0

Другие решения

Вы можете получить похожие модели экземпляра, как.

Offers::with('vehicle.trims')->find($id);

Если вы хотите пройти долгий путь, вы можете попробовать.

Offers::with(['vehicle' => function($query){
$query->with('trims');
})->find($id);

Надеюсь это поможет.

0

Вы также можете использовать запрос на загрузку — вы можете передать закрытие для обработки запроса на загруженный контент:

$result = Offer::with(['vehicle' => function($query) {
$query->with('trims');
}])->get();
0