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 :

Utiliser Zend_Db ou du SQL simple


Sujet :

Zend_Db PHP

  1. #1
    Inactif  
    Inscrit en
    Novembre 2008
    Messages
    255
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 255
    Points : 264
    Points
    264
    Par défaut Utiliser Zend_Db ou du SQL simple
    Bonjour


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    function addUsers($userName,$password, $firstName, $lastName, $email) {
    		$data = array ('username' =>  $userName, 
    		               'password' => $password, 
    		               'firstName' => $firstName, 
    		               'lastName' => $lastName,  
    		               'email' => $email );
    		$this->insert ( $data );	
    	}
    Vous gagnez quoi par rapport à du sql Simple ?
    je pose cette question car ce code est bien pour un simple insert ou select, mais si on a des dizaines de champs avec du calcul spécifique avec des dizaines de sous sélection il n'est pas plus avantage d'utiliser un outils de requetage ?

    Merci

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    178
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 178
    Points : 230
    Points
    230
    Par défaut
    Hello,

    Cet exemple n'apporte effectivement pas grand chose si c'est une méthode d'un objet qui étend Zend_Db_Table car il suffirait de faire un createRow() en lui passant directement les datas.

    S'il s'agissait d'un autre type d'objet cela pourrait permettre de découpler la persistance en base de données du fait de vouloir ajouter un utilisateur. Si un jour l'envie de se passer de base de donnée te prend et que tu veux tout gérer en fichiers csv, libre à toi.

    Maintenant à propos des selects compliqués, avec un objet dédié à la construction des select comme Zend_Db_Select tu y gagnes lorsque tu dois dynamiser les selects, un exemple rigolo dans une méthode générique de listing :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
     
    // si y a un order dans la requête, il prend la main
    if (null !== ($order = $this->_getParam($this->_registry->config->urlParams->sorter->order))) {
    	if (
    		(null !== ($dir = $this->_getParam($this->_registry->config->urlParams->sorter->direction)))
    		and in_array(strtolower($dir), array('asc', 'desc'), true)
    	) {
    		$order .= ' ' . strtoupper($dir);
    	}
     
    	$select->reset(Zend_Db_Select::ORDER)
    			->order($order);
    }
    // si y a pas d'order dans la requête mais que y en a un dans le select
    elseif (array() !== ($order = $select->getPart(Zend_Db_Select::ORDER))) {
    	$order = $order[0][0];
    	$this->_setParam($this->_registry->config->urlParams->sorter->order, $order);
     
    	$dir = explode(' ', trim($order));
    	if (1 < count($dir)) {
    		$this->_setParam($this->_registry->config->urlParams->sorter->direction, strtolower(end($dir)));
    	} else {
    		$this->_setParam($this->_registry->config->urlParams->sorter->direction, 'asc');
    	}
    }
    // si y a pas d'order dans la requête ni dans le select
    else {
    	$order = $this->_model->info(Fxc_Db_Table_Abstract::ORDER_FIELD);
    	$this->_setParam($this->_registry->config->urlParams->sorter->order, $order);
    	$dir = $this->_model->info(Fxc_Db_Table_Abstract::ORDER_DIRECTION);
    	$this->_setParam($this->_registry->config->urlParams->sorter->direction, strtolower($dir));
     
    	$select->order($order . ' ' . $dir);
    }
     
    // filtrage
    if ((null !== $this->_indexFilterHelperConfig) and is_array($this->_indexFilterHelperConfig) and !empty($this->_indexFilterHelperConfig)) {
    	$this->_indexFilterHelper = $this->_helper->getHelper('IndexFilter');
    	$this->_indexFilterHelper->setConfig($this->_indexFilterHelperConfig);
    	$this->_indexFilterHelper->applyFilter($select);
    	$this->view->filterHelper = $this->_indexFilterHelper;
    }
     
    $this->view->paginator = $this->getHelper('Paginator')->initPaginator($select, $itemsPerPage);
    Tu vois, on se passe un objet select et chaque intervenant peux le manipuler tranquillement, tu peux découpler avec ça le code qui filtre de celui qui trie et de celui qui pagine...

  3. #3
    Membre actif

    Inscrit en
    Juin 2009
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 99
    Points : 228
    Points
    228
    Par défaut


    l’objet se chargera de traduire la requête dans une syntaxe du SGBD dont tu migrera dans le futur à savoir

    IBM DB2 et Informix Dynamic Server (IDS) , MySQL,Microsoft SQL Server ,Oracle , PostgreSQL, SQLite, MySQL, Oracle, IBM DB2, Firebird/Interbase.

Discussions similaires

  1. Réponses: 1
    Dernier message: 15/04/2011, 09h33
  2. utiliser du sql simple "Zend_Db_Table'
    Par Jcpan dans le forum MVC
    Réponses: 5
    Dernier message: 10/12/2009, 18h09
  3. [Outils][9i]Utiliser l'outil SQuirreL SQL
    Par MC2 dans le forum Oracle
    Réponses: 2
    Dernier message: 16/11/2005, 15h02
  4. Plantage requete SQL simple sous Delphi7/ADO avec Access
    Par tomy29 dans le forum Bases de données
    Réponses: 2
    Dernier message: 25/08/2005, 11h09
  5. [Crystal Report] Utilisation des vues de sql serveur
    Par Olivierakadev dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 15/11/2002, 17h44

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