Я знаю, что название вопроса не очень понятно, но, пожалуйста, прочитайте полный вопрос, так как мне нужна помощь с этим.
У меня есть три стола …
Отношения примерно такие …
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
и это не работает. Это должно работать, потому что уравновешивания связаны с транспортным средством.
Благодарю.
Я пытался это $ 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) {
//
}
Вы можете получить похожие модели экземпляра, как.
Offers::with('vehicle.trims')->find($id);
Если вы хотите пройти долгий путь, вы можете попробовать.
Offers::with(['vehicle' => function($query){
$query->with('trims');
})->find($id);
Надеюсь это поможет.
Вы также можете использовать запрос на загрузку — вы можете передать закрытие для обработки запроса на загруженный контент:
$result = Offer::with(['vehicle' => function($query) {
$query->with('trims');
}])->get();