• Empleos
  • Sobre nosotros
  • profesionales
    • Inicio
    • Empleos
    • Cursos y retos
  • empresas
    • Inicio
    • Publicar vacante
    • Nuestro proceso
    • Precios
    • Evaluaciones
    • Nómina
    • Blog
    • Comercial
    • Calculadora de salario

0

333
Vistas
obtener datos de la tabla de unión usando laravel elocuente

Soy nuevo en laravel y quiero implementar una relación elocuente.

Dejame explicar.

Considere que tengo 2 mesas

productos

 product_id product_name brand_id price

marcas

 id brand_name

Cada producto tendrá una identificación de marca. Pero en la tabla Marcas, no hay ninguna identificación de producto. Un brand_id puede estar en varias filas de productos y un producto solo tiene un brand_id. Quiero seleccionar alguna columna de la tabla de productos más brand_name con respecto a brand_id de la tabla de productos usando Model.SO en el modelo de producto que escribí:

 public function brands() { return $this->hasOne('App\Brand','product_id'); }

y en Brand model escribo:

 public function products() { return $this->belongsTo('App\Product','brand_id'); }

Ahora quiero el resultado:

 product_name price brand_name

¿Cómo puedo obtener esos datos en el controlador usando una relación elocuente? Además, la forma en que escribí Relación modelo, ¿está bien?

over 3 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Su relación de modelo de producto estará a continuación

 public function brand(){ return $this->belongsTo('App\Brand','brand_id'); } public function product(){ return $this->belongsTo('App\Product','product_id'); }

Ahora en el controlador puede agregar una consulta como se muestra a continuación.

 $products = Product::with('brand','product')->get(); echo '<pre>' print_r($products->toArray()); exit;
over 3 years ago · Santiago Trujillo Denunciar

0

Me parece que desea una relación one-to-many , por lo que una marca puede tener muchos productos y muchos productos pertenecen a una marca.

Modelo del Producto:

 public function brand() { return $this->belongsTo('App\Brand'); }

Modelo de marca:

 public function products() { return $this->hasMany('App\Product'); }

Entonces podría obtener la información de la marca de esta manera:

El modelo completo de la marca:

 Product::first()->brand

El nombre de la marca:

 Product::first()->brand->brand_name

De losdocumentos :

Se utiliza una relación de uno a muchos para definir relaciones en las que un solo modelo posee cualquier cantidad de otros modelos. Por ejemplo, una publicación de blog puede tener una cantidad infinita de comentarios.

PD:

Los nombres de las columnas de su tabla no tienen mucho sentido para mí, ¿por qué tiene product_id en los productos pero luego en las marcas simplemente se llama id ? ¿Por qué tiene product_name pero luego solo price ? ¿Por qué no es solo name o product_price , por lo que al menos es consistente?

over 3 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Nuestro proceso Comercial
Legal
Términos y condiciones Política de privacidad
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recomiéndame algunas ofertas
Necesito ayuda