¿Cómo creo diferentes muchas relaciones para las mismas dos tablas usando elocuentes en Laravel?
-
21-12-2019 - |
Pregunta
Tengo 2 mesas de usuario 'y' contenido '. Un usuario puede tener contenido favorito, por lo que utilizo una tabla de pivote user_content para establecer las muchas a muchas relaciones entre el usuario y el contenido que tienen fiboured. Esto está bien.
Un usuario también puede comprar contenido.Esta sería la misma relación que arriba (user_content), pero sería datos completamente diferentes.
¿Cómo configuro una relación como esta donde la relación entre las tablas es la misma, pero el contenido es diferente? ¿Se puede hacer esto con éxito en Laravel usando elocuent? ¿O hay una forma completamente diferente a la que debería estar acercando a esto?
Solución
Simplemente configure una tabla user_purchase y user_favorite ambos que contienen user_id y content_id campos
luego configure el modelo
como
class User extends Eloquent{
public function purchases()
{
return $this->belongsToMany('Content','user_purchase');
}
public function favorites()
{
return $this->belongsToMany('Content','user_favorite');
}
}
class Content extends Eloquent{
public function buyers()
{
return $this->belongsToMany('User','user_purchase');
}
public function favorites()
{
return $this->belongsToMany('User','user_favorite');
}
}
La segunda columna indica qué tabla para verificar las muchas en muchas relaciones