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


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

sylvain
Auteur

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

Bonjour,

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

sylvain
Auteur

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.

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

sylvain
Auteur

je ne veux pas etre captif d un framework

ç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
Auteur

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

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
Auteur

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

sylvain
Auteur

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.

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

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