Relaciones de tablas
Podemos definir claves ajenas a otras tablas en el XML de la tabla, con las etiquetas constraint. Sin embargo para usarlas en el modelo deberemos definir los métodos correspondientes, aunque nos podemos apoyar en los métodos belongsTo() y hasMany() para mayor comodidad.
belongsTo()
Este método devuelve un registro de la tabla relacionada, solamente hay que indicar el modelo a utilizar y la columna que se usa para la relación. Se entiende mejor con un ejemplo.
Obtener la familia de un producto
La familia del producto se guarda en el campo codfamilia, por lo que solamente tenemos que llamar a belongsTo() con el modelo Familia y el campo codfamilia:
public function familia(): ?Familia
{
return $this->belongsTo(Familia::class, 'codfamilia');
}
hasMany()
Este método devuelve todos los registros relacionados, solamente hay que indicar el modelo a utilizar y la columna que se usa para la relación. Se entiende mejor con un ejemplo.
Obtener todas las variantes del producto
Las variantes se relacionan con el producto mediante su idproducto, por lo que solamente debemos llamar al método hasMany() indicando el modelo Variante y la columna idproducto.
public function getVariantes(): array
{
return $this->hasMany(Variante::class, 'idproducto');
}