sql >> Base de Datos >  >> RDS >> Mysql

Múltiples tablas con una relación de uno a muchos (Laravel)

Deberías estar usando polymorphic relaciones para esto. Permite que múltiples modelos hagan uso de una sola mesa.

Eche un vistazo a la documentación aquí

En su caso particular, cada una de sus tablas haría referencia a un noteable_id columna y un noteable_type .

El noteable_id contendrá la identificación del (A/B/C) modelo.

El noteable_type contendrá el nombre de cadena del modelo (A/B/C) .

El (A/B/C) los modelos ahora obtendrán un nuevo atributo:

/**
 * (A/B/C) Model(s)
 */
public function notes()
{
    return $this->morphMany('App\Notes', 'noteable');
}

Y la note el modelo iniciará sus propiedades polimórficas contra el nombre del atributo utilizado para identificar sus polymorphic ids and types :

/**
 * Note Model
 */
public function noteable()
{
    return $this->morphTo();
}

Ahora simplemente puede llamar a ->noteable en el (A/B/C) modelos, y todos comparten 1 mesa sin necesidad de otra mesa dinámica para cada mesa.