Bonjour,

Alors là j'ai besoin de vous car j'aurais voulu faire un système comme celui de cakephp3 c'est à dire écrire mes requête comme ceci:

$this->Post->find('all')->select('id', 'name'])->where('id' => 1]);

Mais comment faire? Car j'ai essayé de comprendre comme ils ont fait mais je ne comprends pas en faites comment il build la requête car la requête peut très bien être juste le select ou le where donc comment la lancer automatiquement à la fin?

Je sais juste que la fonction find définie une nouvelle query puis renvoie vers callfinder qui teste si findall existe puis renvoie vers celle ci qui retourne la query. Mais rien sur le build donc si quelqu'un peu me donner une piste sur comme si prendre se serait cool car pour l'instant si je debug ma variable query dans le find all elle est vide et je suis obligé de la lancer en fesant un build à la fin et je voudrais pouvoir enlever se build après le where.

Merci d'avance...

4 réponses


djtec
Auteur

Un ptit up!!!!

C'est un système relativement complexe à comprendre et aussi à faire, mais j'ai trouvé 2/3 fonctions qui pourrais te mettre sur la piste :

https://github.com/cakephp/cakephp/blob/3.0/src/ORM/Table.php ligne 1441
Tu trouveras la fonction "applyOptions" qui fait référence à cette fonction :

https://github.com/cakephp/cakephp/blob/3.0/src/ORM/Query.php ligne 436

Tu peut regarder aussi du côté de Laravel, il ont presque le même système.

djtec
Auteur

Cette fonction sert juste à transformer la requête si on la passe en 2eme paramètre du find hors que moi je passe tout après le find

Et laravel fait un get pour executer la requête à la fin donc pas automatique

djtec
Auteur

Personne?