Besoin d'aide ?

Requête avec relation hasMany avec des conditions

  • Avatar de MourareauMathieu
    Membre depuis :
    20/01/2017
    Messages :
    89

    Je dois créer un requête plutot complexe, je vous explique

    Tout d'abord voici ma structure db :

    licencies :
    -id
    -lb_name
    -type_licence_id
    -valid_licence_id

    licencies_medias :
    -id
    -licencie_id
    -file path

    J'ai fais une requête qui renvoice les licences non validées (valid_licence_id = 1 ) avec 2 ou plus de 2 fichiers grace à la methode has. les fichiers sont stockées dans licencies_medias

    $licencies = $query->whereIn('type_licence_id' , [1 , 2 , 3 , 4 , 5])
    ->whereIn('statut_licence_id', ['1' , '4'])
    ->where('valid_licence_id', '1')
    ->has('medias', '>=', 2)
    ->orderBy('lb_name' , 'asc')
    ->paginate(10);

    Mon gros problème c'est que le nombre de fichiers obligatoires dépend de type_licence_id

    Par exemple pour une licence qui a type_licence_id = 1 elle doit avoir 3 licencies_medias (fichiers)

    Pour une licence qui a type_licence_id = 2 elle doit avoir 4 licencies_medias (fichiers)

    J'ai besoin de faire une requête qui m'affiche la collection des licences qui ont le bon nombres de fichiers en fonction du type_licence_id. c'est possible ? je vois pas du tout comment faire ... j'ai jamais eu à faire ce genre de requete

    Voici mes modèles en relations :

    // on licencies model
    public function medias()
    {
    return $this->hasMany(LicenciesMedias::class , 'licencie_id');
    }

    // on licenciesMedia model
    public function licencie()
    {
    return $this->belongsTo(Licencies::class , 'licencie_id);
    }
  • Avatar de bestmomo
    Membre depuis :
    07/04/2013
    Messages :
    2178

    Salut,

    Quand ça se complique comme ça il vaut mieux revenir au bon vieux SQL.

Vous ne pouvez pas répondre à ce sujet.