¿Existe alguna manera de crear un modelo de Relación con un arreglo de identificadores?
¿Alguien sabe cómo crear una relación donde la clave externa sea un arreglo de IDs en lugar de un solo ID?
Controlador de muestra:
$products = Products::with('productCategory')->get();
Relación del modelo:
public function productCategory()
{
return $this->belongsTo(productCategory::class, 'product_category_id', 'id');
}
Tabla de Productos:
[
{
"id": 1,
"name": "Mango",
"product_category_id": ["1", "2"]
}
]
Tabla de Categorías de Productos:
[
{
"id": 1,
"name": "Comida"
},
{
"id": 2,
"name": "Frutas"
}
]
davy.ai
No es posible establecer una relación en Laravel’s Eloquent donde la clave foránea sea un arreglo de IDs en lugar de un solo ID. Las funciones de relación de Eloquent dependen de una única clave foránea para establecer la relación entre las dos tablas. En el ejemplo proporcionado, la relación entre las tablas
Productos
yCategorías de Productos
se ha establecido utilizando una única clave foráneaproduct_category_id
.Si la columna
product_category_id
en la tablaProductos
contiene múltiples valores, una solución sería normalizar los datos creando una tabla de unión para establecer una relación de muchos a muchos entre las dos tablas. La tabla de unión tendría dos columnas:product_id
ecategory_id
, para vincular las tablasProductos
yCategorías de Productos
.Una vez establecida la relación de muchos a muchos, es posible utilizar Eloquent de Laravel para recuperar registros relacionados utilizando los métodos de relación
belongsToMany
ohasManyThrough
.