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_Db PHP Discussion :

[Zend_Db_Select] Selectionner toutes les colonnes SAUF


Sujet :

Zend_Db PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 2
    Par défaut [Zend_Db_Select] Selectionner toutes les colonnes SAUF
    Bonjour,

    Après mettre longuement attardé sur la réalisation d'un CRUD, je trouve qu'il manque un outil à zend : le datagrid !

    En réalisant mon datagrid, j'aimerais pouvoir donner juste le nom de la table pour qu'il me génère un tableau aproprié.

    Seulement j'aimerais pouvoir enlever les colonnes voulu de la requête.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    $registry = Zend_Registry::getInstance();
    $db = $registry->get('db');
     
     
    $datagrid = new Rem_Datagrid();
    $datagrid->setDb($db);
    $datagrid->setTable('client');
    $datagrid->hideCol('client_password');
     
    $this->view->datagrid = $datagrid;
    "Behind the scene" je créer un objet zend select, mais je n'ais pas trouvé de façon simple pour enlever une colonne de la requête.
    Avec la méthode join(), les dernier array permet de fournir les colonnes non désirés mais cet argument n'est pas disponible pour la méthode from() ???

    Y aurait t'il une astuce afin d'éviter de devoir renseigner toutes les colonnes que l'on veut apparaître au lieu de dire juste celles que l'on souhaite enlever?

    De plus je n'arrive plus à trouver à partir d'où on peut récupérer le nom des colonnes de la base de donnée, parce que dans le pire des cas j'utiliserai in_array couplé à unset pour conserver la structure que je voudrais donner à mon datagrid au sacrifice d'un peu plus de traitement.



    J'espère avoir été claire,

    Un grand merci d'avance !

  2. #2
    Membre Expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Par défaut
    Bonjour,

    As-tu une raison particulière d'utiliser un Zend_Db_Select plutôt qu'un Zend_Db_Table ?

    Pour récupérer les noms des champs, il existe la méthode describeTable() de l'adaptateur qui est justement utilisée en interne par Zend_Db_Table_Abstract.

    Pour la sélection des colonnes à afficher / masquer, tu peux aussi t'inspirer de la méthode getResultRowObject de la classe Zend_Auth_Adapter_DbTable : cette méthode est utilisée pour récupérer des données de la table des utilisateurs en précisant soit les champs à récupérer soit les champs à ne pas récupérer. Ce filtre n'est pas fait au niveau de la construction de la requête (qui récupère toutes les données de la table), mais au niveau du traitement du résultat de la requête. Ce résultat étant sous la forme d'un tableau associatif avec les noms des champs, il est très facile de n'en sélectionner qu'une partie ou d'en supprimer certains.

Discussions similaires

  1. Réponses: 2
    Dernier message: 28/10/2013, 08h36
  2. Réponses: 4
    Dernier message: 04/10/2010, 19h01
  3. Sélectionner toutes les colonnes sauf une.
    Par pedro99 dans le forum PostgreSQL
    Réponses: 5
    Dernier message: 23/05/2009, 17h21
  4. Réponses: 6
    Dernier message: 01/08/2006, 18h12
  5. Toutes les colonnes d'une BDD
    Par mohamed dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 16/09/2004, 14h12

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