Come posso creare diversi molte a molte relazioni per gli stessi due tavoli usando Eloquente a Laravel
-
21-12-2019 - |
Domanda
Ho 2 tavoli 'utente' e 'content'. Un utente può contenuto preferito, quindi uso un tavolo pivot user_content per stabilire le molte a molte relazioni tra l'utente e il contenuto che hanno favorito. Questo va bene.
Un utente può anche acquistare contenuti.Questa sarebbe la stessa relazione di cui sopra (User_Content) ma sarebbe un dato completamente diverso.
Come configurare una relazione come questa in cui la relazione tra le tabelle è la stessa, ma il contenuto è diverso - può essere fatto con successo a Laravel usando eloquente? O c'è un modo completamente diverso che dovrei avvicinarsi a questo?
Soluzione
Basta configurare una tabella utente_purchase e user_favorite sia contenenti campi utente_id e content_id
Quindi configurare il modello
AS
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 seconda colonna indica quale tabella controllare le molte a molte relazioni