Bonjour,

je travaile sur un système de reservation et je suis actuellement en train de chercher a afficher les informations du propriétaire du local concerné par la reservation.

J'ai donc mes variables comme suivant :

reservation->locaux->user_id // id du proprio

Dans mon controller je cherche donc les infos via :

    $proprio = $this->Reservations->Locaux->Users->find('all', array(
                                                'condition' =>array(
                                                                'users.id LIKE' => $reservation->locaux->user_id)
                                                )
                                            );
    $this->set(compact('users', 'reservations', 'proprio'));

Mais ceci me retourne une variable avec tous les utilisateurs ! Et non seul celui concerné, pouvez vous me guider vers mon erreur ?

6 réponses


Ferias Quarante
Réponse acceptée

Euuh oui mais en fait (on est bêtes sur ce coup), si tu cherches un enregistrement avec son id il faut juste faire un get :

 $proprio = $this->Reservations->Locaux->Users->get($reservation->locaux->user_id);

Bonjour,
Je pense que tu decrais faire find('first') et non all. Car c'est sur que cakephp va te donner tout les résultats et non un résultat. :)

Bonjour,

c'est étrange, quand j'utilise find(first) je me retrouve avec une erreur :

Unknown finder method "first"

:/

Bonjour,

1 - pour le first, tu rajoutes ->first() après le find() : Users->find('all', ...)->first()
2 - pourquoi mettre [users.id LIKE => ...] dans la condition du find() et pas juste [users.id => ...] ?

Bonjour,

1 / En effet il me retourne juste le premier résultat mais pas le bon :/ Il ne prend pas en compte ma condition.

2 / Je ne sais pas c'est ce qui est dans la superbe doc de cake, ca me paraissait étrange aussi de taper sur un "like" alors que je veux une égalité.

Oooooh c'est trop bien ! Merci beaucoup Ferias Quarante j'avais completement zappé l'existence du get() !

Bonnes fêtes à vous !