Besoin d'aide ?

Model - Relation avec 2 paramètres

Avatar de PLJerem
PLJerem

Bonjour,

J'ai deux tables :

  1. activites
  • id
  • activite_numero
  • activite_tache
  • etc.
  1. activites_planifiees
  • id
  • statut
  • activite_numero
  • activite_tache
  • etc.

La table "activites" contient des tâches à réaliser, pour un même numéro d'acitivité je peux avoir plusieurs tâches. La table "activites_planifiees" contient des activités/tâches planifiées.

Il est à savoir que je n'ai pas la possibilité de mettre directement l'ID de la table "activites" dans "activites_planifiees" pour créer une relation "hasMany" dans mon modèle "Activites".

Je souhaite à partir d'une activité/tâche avoir une relation me remontant toutes les activités/tâches planifiées correspondantes. De tout ce que j'ai pu voir je n'ai pas la possibilité de créer une relation hasMany avec deux paramètres.

Modèle "activites" ;

class Activites extends Model
{
    // ... Tout ce qui va bien au fonctionnement du modèle...
    
    public function planificationsLiees ()
    {
        // Cas pas possible car impossible de baser une relation sur plusieurs paramètres
        return $this->hasMany(ActivitesPlanifiees::class, 'LaPasPossibleDeMettreDeuxParamètres')
        
        // Ca ne se fait pas mais en gros c'est ce que je voudrais qui me soit retourné dans ma relation
        return ActivitesPlanifiees->where('activite_numero', $this->activite_numero)
            ->where('activite_tache', $this->activite_tache)
            ->where('status', 'valide')
            ->get()
    }
}

Modèle "activites_planifiees" ;

class ActivitesPlanifiees extends Model
{
    // ... Tout ce qui va bien au fonctionnement du modèle...
}

Mon controlleur :

class ActivitesController extends Controller
{
    public function show($activiteId) {
        $activite = Activites::with('planificationsLiees')->find($activiteId);
    }
}

Si vous avez une solution simple pour que je mette en oeuvre cette relation je suis preneur de tout conseil :)

Posté il y a 3 mois
Avatar de bestmomo
bestmomo

Salut,

Par défaut Eloquent ne gère pas plusieurs clés mais il existe le package compoships.

Posté il y a 3 mois
Avatar de PLJerem
PLJerem

Bonjour Bestmomo,

Je viens de tester, ca fonctionne à merveille. Je te remercie.

Posté il y a 3 mois

Vous ne pouvez pas répondre à ce sujet.