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.