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();