2008-12-23 9 views
-1

Comment puis-je facilement implémenter des requêtes dans le framework Zend?Cadre PHP et Zend

+0

Interrogation quoi? Service Web, base de données (mssql, mysql, sqlite, ...)? – UnkwnTech

+0

en utilisant un cadre MVC pour interroger une base de données est comme utiliser un lance-roquettes pour tuer un cafard. trop. à moins que votre requête de base de données fasse partie d'un projet BEAUCOUP plus important. mais cela ne semble pas être le cas. php droite serait beaucoup plus facile à mettre en œuvre IMHO –

+0

Après la mise en place de l'élément squelette, suivez les étapes. http://framework.zend.com/manual/current/en/in-depth-guide/first-module.html – Gary

Répondre

0

Vous pouvez utiliser l'objet adaptateur Zend Db comme ceci:

$sql = 'SELECT * FROM bugs WHERE bug_id = ?'; 

$result = $db->fetchAll($sql, 2); 
5

Vérifiez ce document:

Zend Framework Database Quick Start(PDF)

+0

Ce lien ne fonctionne plus. Consultez la page du manuel officiel: [http://framework.zend.com/manual/1.12/fr/zend.db.select.html] – konradwww

+0

votre lien ne fonctionne pas @konradwww –

+0

Essayez celui-ci: http: // framework .zend.com/manual/1.12/fr/zend.db.select.html – konradwww

0

Utilisez Zend_Db et il suffit de créer un objet $ db en utilisant Zend_Db Factory Method, puis créez des instructions SQL à l'aide de la classe Zend_Db_Select et transmettez l'instruction SQL $ select aux méthodes fetch * (fetchRow, fetchAll ...).

0

1.Config:

config/autoload/dbAdapter.local.php

<?php 
return array(
    'db' => array(
     'driver' => 'Pdo', 
     'dsn'  => 'mysql:dbname=name;host=localhost', 
     'username' => 'root', 
     'password' => 'root',  
    ), 
    'service_manager' => array(
     'abstract_factories' => array(
      'Zend\Db\Adapter\AdapterAbstractServiceFactory', 
     ), 
    ), 
); 
  1. Mise en œuvre:
public function testAction() 
{ 
    $username = 'user'; 


    $sql  = "SELECT email FROM users WHERE username = ?"; 
    $statement = $this->getDbAdapter()->createStatement($sql, array($username)); 
    $result = $statement->execute()->current(); 
} 



protected function getDbAdapter() 
{ 
    if($this->dbAdapter == null) { 
     $this->dbAdapter = $this->getServiceLocator()->get('Zend\Db\Adapter\Adapter'); 
    } 

    return $this->dbAdapter; 
} 
1

Vous pouvez utiliser doctrine2 Doctrine project. Il existe un module compatible avec ZF3 DoctrineModule. Vous pouvez utiliser QueryBuilder pour créer des requêtes sur la manipulation d'objets.

+0

Je recommande fortement Doctrine. Il a une courbe d'apprentissage élevée, mais une fois que vous maîtrisez, vous réduisez votre travail de DB de 75%. Il s'intègre également avec les frameworks les plus populaires et PHP standard, vous n'aurez donc pas à le réapprendre. – Bluebaron

0

framework Zend a abstract_factories, il nous permet de gérer plusieurs requêtes DB:

Zend \ Db \ Adapter \ AdapterAbstractServiceFactory

  1. Nécessité de définir Service Manager:

    'service_manager' = > array ( 'abstract_factories' => array ( 'Zend \ Db \ Adapter \ AdapterAbstractServiceFactory', ), ),

  2. adaptateurs de configurer dans config/autoload/local.php

    db »=> array ( 'adaptateurs' => array (

    'database1' => array(
         'driver'   => 'Pdo', 
         'dsn'    => 'mysql:dbname=userDB;host=localhost', 
         'driver_options' => array(
          PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'UTF8\'' 
         ), 
        ), 
    
        etc... 
    ), 
    

    ),

  3. adaptateurs configurer dans config/autoload/global.php

    return array(
    'db' => array(
        'adapters' => array(
         'database1' => array(
         'username' => 'root', 
         'password' => '', 
         ), 
        ),  
    ), 
    

    );

  4. adaptateurs d'appel

    $ dbmanager-> get ('database1');

  5. Utilisation dans le modèle

    use Zend\Db\TableGateway\AbstractTableGateway; 
    use Zend\Db\Adapter\Adapter; 
    
    class UserTable extends AbstractTableGateway 
    { 
        protected $table ='user'; 
    
    public function __invoke(Adapter $adapter) 
    { 
        $this->adapter = $adapter; 
        $this->initialize(); 
    } 
    
    public function fetchAll() 
    { 
        $resultSet = $this->select(); 
        return $resultSet->toArray(); 
    } 
    

    }