Skip to content
AntonShevchuk edited this page Jul 16, 2012 · 22 revisions

Описание

Удобная обертка для PDO

Настройка

// configuration example
<?php
"db" => array(
    "connect" => array(
        "type" => "mysql",
        "host" => "hippo.nixsolutions.com",
        "name" => "p_mvc",
        "user" => "p_mvc",
        "pass" => "mvc",
    ),
    'defaultAdapter' => true
),

Использование

<?php
// init settings, not connect!
$db->setConnect(array(
    'type' => 'mysql',
    'host' => 'localhost',
    'name' => 'db name',
    'user' => 'root',
    'pass' => ''
));
 
// quote variable
$db->quote($id)
 
// query
$db->query("SET NAMES 'utf8'");
 
// get one
$db->fetchOne("SELECT COUNT(*) FROM users");
 
// get row
$db->fetchRow("SELECT * FROM users WHERE id = ". $db->quote($id));
$db->fetchRow("SELECT * FROM users WHERE id = ?", array($id));
$db->fetchRow("SELECT * FROM users WHERE id = :id", array(':id'=>$id));
 
// get array
$db->fetchAll("SELECT * FROM users WHERE ip = ?", array($ip));
 
// get pairs
$pairs = $db->fetchPairs("SELECT ip, COUNT(id) FROM users GROUP BY ip", array());
 
// get object
// .. to stdClass
$stdClass = $db->fetchObject('SELECT * FROM some_table WHERE id = ?', array($id));
// .. to new Some object
$someClass = $db->fetchObject('SELECT  * FROM some_table WHERE id = ?', array($id), 'Some');
// .. to exists instance of Some object
$someClass = $db->fetchObject('SELECT * FROM some_table WHERE id = ?', array($id), $someClass);

// plain insert/update/delete
// insert
$db->insert('some_table', array('col1'=>'foo', 'col2'=>'bar'));
// update
$db->update('some_table', array('col1'=>'bar', 'col2'=>'foo'), array('id'=>1));
// delete
$db->delete('some_table', array('id'=>1));

Транзакции

<?php
// controller code
if ($this->getDb()->transaction(function() use ($acl) {
    /**
     * @var \Bluz\Application $this
     */
    $this->getDb()->delete('acl_privileges');
})) {
    $this->getMessages()->addSuccess('All data was saved');
} else {
    $this->getMessages()->addError('Internal server error');
}

Clone this wiki locally