with tablas relaciones relacionadas obtener hasone hacer ejemplos datos consultas belongsto anidadas php laravel eloquent object-relationships

php - tablas - Recuperando relaciones de relaciones usando Eloquent en Laravel



relaciones laravel ejemplos (2)

Tengo una base de datos con las siguientes tablas y relaciones:

Advert 1-1 Car m-1 Modelo m-1 Brand

Si quiero recuperar un anuncio, simplemente puedo usar:

Advert::find(1);

Si quiero los detalles del automóvil, podría usar:

Advert::find(1)->with(''Car'');

Sin embargo, si también quiero los detalles del modelo (siguiendo la relación con Car), cuál sería la sintaxis, lo siguiente no funciona:

Advert::find(1)->with(''Car'')->with(''Model'');

Muchas gracias


Primero necesitas crear tus relaciones,

<?php class Advert extends Eloquent { public function car() { return $this->belongsTo(''Car''); } } class Car extends Eloquent { public function model() { return $this->belongsTo(''Model''); } } class Model extends Eloquent { public function brand() { return $this->belongsTo(''Brand''); } public function cars() { return $this->hasMany(''Car''); } } class Brand extends Eloquent { public function models() { return $this->hasMany(''Model''); } }

Entonces solo tienes que acceder de esta manera:

echo Advert::find(1)->car->model->brand->name;

Pero los campos de su tabla deberían ser, porque Laravel los adivina de esa manera:

id (for all tables) car_id model_id brand_id

O tendrás que especificarlos en la relación.


Está en la documentación oficial en "Cargando con impaciencia"

Relaciones múltiples:

$books = Book::with(''author'', ''publisher'')->get();

Relaciones anidadas:

$books = Book::with(''author.contacts'')->get();

Entonces para ti:

Advert::find(1)->with(''Car.Model'')->get();