POO et model [tuto]

Par sylvain, il y a 13 ans


Bonjour,
Dans le tutoriel pour la création de model en POO.
Comment cela se passerait il s'il on a une requête qui fait une jointure ?
Donc pas seulement sur category ou tuto, mais par exemple si on cherche tous les tutoriels dans une catégorie . on devra faire une jointure. et je vois pas trop en fait.

13 réponses

Grafikart, il y a 13 ans

A toi de créer ce cas, de gérer un index "join" par exemple :)

sylvain, il y a 13 ans

Oui je comprends bien, en SQL j'aurais fait ca. et cela aurait été simple.
Mais la ce n'est plus tres clair avec les hasMany et BelongsTo

beegees, il y a 13 ans

Bonjour,

Je serais très intéressé ausis, merci d'avance pour la réponse.

sylvain, il y a 13 ans

Est il possible de faire les choses a l'ancienne ? car parfois je me dit que ce truc, ca ne servira que dans cakephp, mais il suffira un jour d'une migration pour se rendre compte qu'il est difficile de passer a autre chose.

beegees, il y a 13 ans

ben oui, tu dois le faire à l'ancienne, surtout si tu n'utilises pas de Framework.

sylvain, il y a 13 ans

je ne veux pas etre captif d un framework

beegees, il y a 13 ans

ça devrait ressembler à ceci :

//Select LEFT JOIN
    public function leftJoin($fields=null, $table2, $champON1, $champON2, $conditionWhere1, $conditionWhere2)
        {
        if($fields==null){ $fields = "*"; }
        $sql = "SELECT $fields FROM ".$this->table. " LEFT JOIN $table2 ON $champON1 = $champON2";
        $sql.= " WHERE :cond1 = :cond2";
        $req = $this->dbh->prepare($sql);
        $data = array(":cond1"=>$conditionWhere1, ":cond2"=>$conditionWhere2);
        $req->execute($data);
        return $req->fetchAll();
    }

Je vais demander à quelqu'un d'autres de contrôler la syntaxe svp ? Peut-être que ce code peut être amélioré ???

Merci d'avance.

bee

sylvain, il y a 13 ans

je trouve que c est insense de faire un left join comme ca. plus compliquer ca sert a quoi ?

beegees, il y a 13 ans

Je pense que c'est toi qui n'a pas compris l'utilisation.

Pour l'utilisation, il suffit de passer quelques paramètres. Le code ci-dessus ne devra plus être ré-écrit !

Exemple pour l'utilisation :

$req = new Model;
$req->table = 'TableTest';
$req->leftJoin("table2","champ1","champ2","cond1","cond2");

Maintenant, si tu crois pouvoir faire mieux, j'attends tes suggestions !

bee

sylvain, il y a 13 ans

mais si j ai besoins de faire plus qu un left join ?

sylvain, il y a 13 ans

Bon j'ai vois a peu pres, et la je trouve que l'on perds beaucoup de temps. si on a besoins de faire une requete specifique.

beegees, il y a 13 ans

je t'invite à t'y mettre alors... ça ne te fera pas de mal de t'entrainer à coder.

beegees, il y a 13 ans

J'ai modifié la dernière version de mon code en y ajoutant des labels PDO