IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Zend Framework PHP Discussion :

SQL dans Zend_Db_Table_Abstract


Sujet :

Zend Framework PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2008
    Messages
    519
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2008
    Messages : 519
    Par défaut SQL dans Zend_Db_Table_Abstract
    Bonjour,

    J'utilise le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    class TUser extends Zend_Db_Table_Abstract
    {
        protected $_name = 'user';
        protected $_primary = 'userID';
    }
     
    $table = new TUser;
    $users = $table->fetchAll();
    foreach ($users as $user)
    {
        echo $user->userNom.'</br>';
    }
    Par défaut il me fait un SELECT * de la table user.

    J'aimerai passer une requête SQL afin de sélectionner moi même les colonnes et les résultats à récupérer ?

    Est-il possible de passer par une requête SQL classique et non pas par un :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $select = $table->select()->from($table, 'userNom')
    ->where('id < ?', 5);
    Merci

  2. #2
    Membre Expert
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2012
    Messages
    631
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2012
    Messages : 631
    Par défaut
    bonjour,
    avec zend_bd,tu peux sélectionner toi même les colonnes à récupérer en faisant ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $select = $table->select()->from('nomTable', array('userNom','col2','col2'))
    ->where('id < ?', 5);
    //pour afficher la requête sql génerée :echo $select->__toString();
    $this->fetchAll($select);
    avec sql, tu dois faire appel à l'adapter de zend_db:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $sql="SELECT * FROM nomTable ";
              $query= $this->getAdapter()->fetchAll($sql);
    //un dump du résultat retourné:
    //Zend_Debug::dump($query);

  3. #3
    Membre très actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2008
    Messages
    519
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2008
    Messages : 519
    Par défaut
    Oui j'ai déjà essayé cette solution, mais il me retourne un tableau :

    array(5) {
    [0] => array(1) {
    ["userNom"] => string(6) "Bond"
    }
    [1] => array(1) {
    ["userNom"] => string(7) "Desplat"
    }
    [2] => array(1) {
    ["userNom"] => string(5) "Lewis"
    }
    [3] => array(1) {
    ["userNom"] => string(8) "Cranston"
    }
    [4] => array(1) {
    ["userNom"] => string(6) "Norton"
    }
    }
    alors que je voudrais le résultat sous la forme :

    object(Zend_Db_Table_Rowset)#10 (10) {
    ["_data":protected] => array(5) {
    [0] => array(4) {
    ["userID"] => string(1) "1"
    ["userNom"] => string(6) "Bond"
    ["userPrenom"] => string(4) "James"
    ["userIsAdmin"] => string(1) "1"
    }
    [1] => array(4) {
    ["userID"] => string(1) "2"
    ["userNom"] => string(7) "Desplat"
    ["userPrenom"] => string(9) "Alexandre"
    ["userIsAdmin"] => string(1) "0"
    }
    [2] => array(4) {
    ["userID"] => string(1) "3"
    ["userNom"] => string(5) "Lewis"
    ["userPrenom"] => string(6) "Damian"
    ["userIsAdmin"] => string(1) "0"
    }
    [3] => array(4) {
    ["userID"] => string(1) "4"
    ["userNom"] => string(8) "Cranston"
    ["userPrenom"] => string(5) "Bryan"
    ["userIsAdmin"] => string(1) "0"
    }
    [4] => array(4) {
    ["userID"] => string(1) "5"
    ["userNom"] => string(6) "Norton"
    ["userPrenom"] => string(6) "Edward"
    ["userIsAdmin"] => string(1) "0"
    }
    }
    ["_table":protected] => object(TUser)#8 (18) {
    ["_name":protected] => string(4) "user"
    ["_primary":protected] => array(1) {
    [1] => string(6) "userID"
    }
    [...]

  4. #4
    Membre Expert
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2012
    Messages
    631
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2012
    Messages : 631
    Par défaut
    oui c'est possible de rendre un tableau d'objets.je pense que le code ressemble à ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    class TUser extends Zend_Db_Table_Abstract
    {
         protected $_fetchMode = Zend_Db::FETCH_OBJ;
     
        public function _construct(){
            $this->getAdapter()->setFetchMode($this->_fetchMode);
     
       }
    }

  5. #5
    Membre très actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2008
    Messages
    519
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2008
    Messages : 519
    Par défaut
    Il m'affiche le résultat toujours sous forme de tableau avec la notice suivante :

    Notice: Trying to get property of non-object in /www/htdocs/examples/ZendDB_Abstract.php on line 54

  6. #6
    Membre Expert
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2012
    Messages
    631
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2012
    Messages : 631
    Par défaut
    ta requête se trouve bien dans une méthode?

    autrement tu peux tout combiner comme ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $db= $this->getAdapter();
    $db->setFetchMode(Zend_Db::FETCH_OBJ);
    $sql="SELECT * FROM nomTable ";
              $query= $db->fetchAll($sql);

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. résultat d'une requete SQL dans un tableau en JSP
    Par Paradoxys dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 06/04/2005, 16h17
  2. Appel d'un script SQL dans une procdure stockée
    Par doudou10000 dans le forum Oracle
    Réponses: 10
    Dernier message: 01/12/2004, 10h01
  3. SQL dans Procédure stockée
    Par julure dans le forum Oracle
    Réponses: 13
    Dernier message: 02/11/2004, 16h57
  4. Problème de requète SQL dans un Requery
    Par Keraccess dans le forum Requêtes et SQL.
    Réponses: 7
    Dernier message: 22/10/2004, 14h58
  5. [PL/SQL] Utilisation table PL/SQL dans clause IN
    Par Yorglaa dans le forum PL/SQL
    Réponses: 13
    Dernier message: 05/10/2004, 10h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo