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 :)

Avatar de bestmomo
bestmomo

Salut,

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

Avatar de PLJerem
PLJerem

Bonjour Bestmomo,

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

Vous ne pouvez pas répondre à ce sujet.