Support the ongoing development of Laravel.io →
Database Eloquent
Last updated 2 years ago.
0

Hola jssvalagua!

No hace falta tantos argumentos, fijate:

Mi ejemplo: Tabla usuarios, tabla roles, tabla de relacion

En el modelo del usuario:

public function roles()
    {
        return $this->belongsToMany('App\Role');
    }

En el modelo del role

public function users()
    {
    	return $this->belongsToMany('App\User');
    }

Los nombres de las tablas son lo interesante, por ejemplo:

En mis ejemplos para evitar passar tantos parametros las tablas se llaman asi:

  • users

  • roles

  • role_user

y oviamente el role_user tiene user_id y role_id con eso es suficiente

Last updated 8 years ago.
0

Hola jssvalagua,

Veo que tus relaciones estan declaradas de forma correcta: Una observación, dado que tus relaciones son Many-To-Many los nombres de las funciones deberían de ser en plural:

public function recetas()
{
    return $this->belongsToMany('App\Receta', 'intercambios' ,'alimento_id');
}

Otro cosa, es recomendado que tu tabla unión se llame según el nombre de tus tablas en SINGULAR y por orden alfabético, y no un nombre XXXXX en tu caso seria:

public function recetas()
{
    return $this->belongsToMany('App\Receta', 'alimento_receta', 'alimento_id');
}

Ahora respondiendo a tu pregunta, debes hace uso de la funcion "pivot" para acceder a tus campos adicionales en la tabla "intercambios" (alimento_receta)

public function recetas()
{
    return $this->belongsToMany('App\Receta', 'alimento_receta', 'alimento_id')
                    ->withPivot('columna1', 'columna2')
                    ->withTimestamps();

}
->withTimestamps()

Te sirve para llevar lascolumnas created_at, updated_at

Last updated 8 years ago.
0

Sign in to participate in this thread!

Eventy

Your banner here too?

Moderators

We'd like to thank these amazing companies for supporting us

Your logo here?

Laravel.io

The Laravel portal for problem solving, knowledge sharing and community building.

© 2024 Laravel.io - All rights reserved.