Questions sur PDO et les jointures
Posté : 13 nov. 2014, 08:57
Bonjour à toutes et tous,
J'ai un framework au sein duquel j'utilise l'objet PDO pour effectuer tout ce qui est requête SQL. J'aimerais améliorer ma méthode en "automatisant" la gestion des requêtes "multi-table". De manière générale j'utilise le LEFT JOIN dans mes SELECT.
Voici un exemple de requête :
J’exécute la requête avec PDO :
et voici le contenu de l'array "$donnees" :
Alors j'ai deux questions qui auront tendance à se rejoindre :
la 1ère : au niveau du tableau "donnees", y a t'il un moyen pour regrouper les champs par "tables" dans des sous-tableau ? j'ai fais des recherches au niveau des paramètres de la méthodes "fetch", au niveau d'autres méthodes de PDO, avec des GROUP BY... pas moyen.
Je sais que le framework CakePHP le fait mais je n'arrive pas à voir comment.
la 2ème : si jamais un des critères n'est pas respecté au niveau d'une des tables, comment faire pour que les données des autres tables soit tout de même retournées ??
Merci d'avance pour votre aide et bonne journée.
J'ai un framework au sein duquel j'utilise l'objet PDO pour effectuer tout ce qui est requête SQL. J'aimerais améliorer ma méthode en "automatisant" la gestion des requêtes "multi-table". De manière générale j'utilise le LEFT JOIN dans mes SELECT.
Voici un exemple de requête :
Code : Tout sélectionner
SELECT users.*, profils.fields, userjoin.nom_jointure FROM pref_users AS users LEFT JOIN prefs_profils AS profils ON profils.uid = users.id LEFT JOIN pref_userjointures AS userjoin ON userjoin.uid = users.idCode : Tout sélectionner
$pdo_q = $pdo->prepare($requete); //celle citée en exemple
$pdo_q->execute($conditions);
$donnees = (array) $pdo_q->fetch(PDO::FETCH_GROUP|PDO::FETCH_ASSOC);
$pdo_q->closeCursor();Code : Tout sélectionner
array (size=16)
'id' => string '1' (length=1)
'username' => string 'micka' (length=9)
'name' => string 'mickael' (length=7)
'mail' => string '[email protected]' (length=27)
'state' => string '1' (length=1)
'registration' => string '0' (length=1)
'last_connection' => string '0' (length=1)
'fields' => string '{}' (length=2)
'nom_jointure' => string 'polo' (length=4)la 1ère : au niveau du tableau "donnees", y a t'il un moyen pour regrouper les champs par "tables" dans des sous-tableau ? j'ai fais des recherches au niveau des paramètres de la méthodes "fetch", au niveau d'autres méthodes de PDO, avec des GROUP BY... pas moyen.
Je sais que le framework CakePHP le fait mais je n'arrive pas à voir comment.
la 2ème : si jamais un des critères n'est pas respecté au niveau d'une des tables, comment faire pour que les données des autres tables soit tout de même retournées ??
Merci d'avance pour votre aide et bonne journée.