Как я могу легко реализовать запросы в Zend framework?
использование инфраструктуры MVC для запроса базы данных похоже на использование ракетной установки для уничтожения таракана. слишком. если ваш запрос к базе данных не является частью НАМНОГО более крупного проекта. но похоже, что это не так. прямой php было бы намного проще реализовать ИМХО
После настройки каркасного элемента выполните следующие действия. framework.zend.com/manual/current/en/in-depth-guide/…






Вы можете использовать объект Zend Db Adapter следующим образом:
$sql = 'SELECT * FROM bugs WHERE bug_id = ?';
$result = $db->fetchAll($sql, 2);
Проверьте этот документ:
Базы данных Zend Framework: краткое руководство(PDF)
Эта ссылка больше не работает. Посетите официальную страницу руководства: [framework.zend.com/manual/1.12/en/zend.db.select.html]
Используйте Zend_Db и просто создайте объект $ db с помощью фабричного метода Zend_Db, а затем создайте операторы SQL с помощью класса Zend_Db_Select и передайте оператор SQL $ select методам fetch * (fetchRow, fetchAll ...).
1. конфигурация:
конфигурация / автозагрузка / 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',
),
),
);
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; }
Вы можете использовать doctrine2 Доктрина проекта. Есть модуль, совместимый с ZF3 ДоктринаМодуль. Вы можете использовать QueryBuilder, который позволяет создавать запросы к манипуляциям с объектами.
Я также очень рекомендую Doctrine. У него высокая кривая обучения, но как только вы овладеете им, вы сократите свою работу с БД на 75%. Он также интегрируется с большинством популярных фреймворков и стандартным PHP, поэтому вам не придется заново его изучать.
У Zend framework есть abstract_factories, он позволяет нам обрабатывать несколько запросов к БД:
Zend \ Db \ Adapter \ AdapterAbstractServiceFactory
Необходимо установить Service Manager:
'service_manager' => массив ( 'abstract_factories' => массив ( 'Zend \ Db \ Adapter \ AdapterAbstractServiceFactory', ), ),
Настройте адаптеры в config / autoload / local.php
db '=> массив ( 'адаптеры' => массив (
'database1' => array(
'driver' => 'Pdo',
'dsn' => 'mysql:dbname=userDB;host=localhost',
'driver_options' => array(
PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'UTF8\''
),
),
etc...
),
),
Настройте адаптеры в config / autoload / global.php
return array(
'db' => array(
'adapters' => array(
'database1' => array(
'username' => 'root',
'password' => '',
),
),
),
);
Адаптеры вызова
$ dbmanager-> получить ('база данных1');
Использование в модели
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();
}
}
Что спрашивать? Веб-сервис, база данных (mssql, mysql, sqlite, ...)?