Laravel 5

Variable dans requête Eloquent

  • Avatar de VincentPIEPLU
    Membre depuis :
    04/04/2015
    Messages :
    206

    Bonjour,

    J'avais fait cette requête qui fonctionne bien :

    $travels = \App\Model\Travel::withCount('infos', 'interested', 'reserved')->whereHas('infos', function($query) {
    $query->where('date_limit_reservation', '>=', date('Y-m-d H:i:s'));
    })->take($number_of_travels)->orderBy('created_at', 'desc')->paginate(10);

    Puis j'ai eut besoin d'une nouvelle données, j'ai transformé en :

    $travels = \App\Model\Travel::withCount('infos', 'interested', 'reserved')->with(['i_interested' => function($query) {
    $query->where('travel_id', $travel_id);
    }])->whereHas('infos', function($query) {
    $query->where('date_limit_reservation', '>=', date('Y-m-d H:i:s'));
    })->take($number_of_travels)->orderBy('created_at', 'desc')->paginate(10);

    Mais le souci, c'est ce que j'ai mis en variable 'travel_id'

    En fait, travel_id, j'aimerais que ce soit l'id du travel que je suis en train de récupérer, mais je n'y parviens pas.

    AUriez vous une idée de comment faire ça proprement ?

    Merci

  • Avatar de VincentPIEPLU
    Membre depuis :
    04/04/2015
    Messages :
    206

    Personne n'a d'idée pour me débloquer de cette situation ?

  • Avatar de bestmomo
    Membre depuis :
    07/04/2013
    Messages :
    1644

    Bonjour,

    C'est assez curieux ce where, on dirait que c'est pour remplacer une absence de relation qui pourtant semble exister...

  • Avatar de VincentPIEPLU
    Membre depuis :
    04/04/2015
    Messages :
    206

    Justement, c'est surement l'erreur, mais comment dois je modifier du coup, je n'ai pas trouvé la solution :(

    Merci bestmomo de ton aide.

  • Avatar de bestmomo
    Membre depuis :
    07/04/2013
    Messages :
    1644

    C'est difficile à dire sans connaître le schéma. Quelle est la relation entre travels et i_interested ?

  • Avatar de VincentPIEPLU
    Membre depuis :
    04/04/2015
    Messages :
    206

    Dans Travel, j'ai créé :

    public function i_interested()
    {
    return $this->belongsTo('App\Model\Interested', 'id', 'travel_id')->where('user_id', Auth::id());
    }

    Je me dis que ca risque de poser aussi un problème si on n'est pas connecté ?

    Merci

  • Avatar de bestmomo
    Membre depuis :
    07/04/2013
    Messages :
    1644

    Puisque travel_id est déjà la clé étrangère pourquoi refaire un where dessus dans la requête ? Pour le Auth::id() s'il n'y a personne ça va renvoyer null et du coup aucun enregistrement en retour.

    Je dois m'absenter maintenant donc je répondrai pas pendant un moment. Bon courage ;)

  • Avatar de VincentPIEPLU
    Membre depuis :
    04/04/2015
    Messages :
    206

    Tu as complètement raison, j'ai voulu me compliquer pour rien. Merci ;)

Vous ne pouvez pas répondre à ce sujet.