J'ai plusieurs requetes SQL dont voici un exemple

SELECT * FROM promotions LEFT JOIN items ON promotions.listitem = items.id WHERE promotions.status = 1 ORDER BY promotions.id desc

Je me demande si ca vaut le coup de les ecrire proprement selon la convention cakephp

Merci d'avance pour vos idées

3 réponses


Marien
Réponse acceptée

Bonjour !
Je pense, personnellement, qu'à partir du moment où tu utilises un framework, respecter au maximum les conventions proposées (imposées dans certains cas) par celui-ci est vraiment utile !
Dans un premier temps, ça te permet d'avoir une certaine rigueur qui, dans le travail avec PHP, n'est pas tout le temps nécessaire mais fortement utile pour s'y retrouver!
Dans un second temps, c'est sympa aussi pour pouvoir t'y retrouver lorsque tu auras des problèmes, je m'explique: en suivant les conventions, si tu bloques dans certaine phase de ton développement, tu vas avoir envie de demander de l'aide, notamment ici sur Grafikart, et ce qui prend le plus de temps quand tu demandes de l'aide à la communauté c'est de se faire comprendre. Si tu codes à ta sauce, tu avanceras vite mais dès que tu vas bloquer, tu vas mettre pas mal de temps à résoudre un problème... Un problème qui pourrait être réglé en bien moins de temps si la communauté comprend du premier coup ce que tu as essayé de faire :)
Enfin, et dans un dernier temps, en respectant conventions et particularités du framework, ça permettra un possible travail en groupe ! Il sera facile pour tes camarades de comprendre ce que tu as fais. Evidemment, quelques lignes de commentaires sont toujours les bienvenues ;)

Pour ce genre de requête SQL, même si cela paraît anodin, j'ai pour habitude d'utiliser les outils proposés par CakePHP. Ainsi, en admettant que tu as des contrôleurs issus de tes tables promotions et items, j'aurais tendance à utiliser ce genre de requête dans ton contrôleur:

$promotions = $this->Promotions->find('all');
$query = $promotions->find('all', ['order'=>['Promotions.id'=>'DESC']])->contain(['Items'])->where(['Promotions.status='=>1]);
$this->set('promotions', $promotions);

Et ce genre de foreach dans ta vue:

foreach($promotions as $promo){
    echo $promo->id;
    echo $promo->nom;
}

En espérant t'avoir aidé :)

N'hésite pas à me donner un retour pour savoir si ma réponse te convient ou non !

Courage :)

sylvain
Auteur

Merci Marien, c'est bien détaillé