Zend Framework - Zend Db

From XennisWiki
Jump to: navigation, search

Ausführliche Hilfe: Programmer's Reference Guide

Initialisierung

/*
 * Zend_Db
 *
 * Verbinung mit der Datenbank (Parameter und Datenbanktyp, hier MySQL)
 */
require_once 'Zend/Loader.php';
Zend_Loader::loadClass( 'Zend_Db' );

$params = array(
    'host'           => 'HOSTNAME',
    'username'       => 'USERNAME',
    'password'       => 'PASSWORD',
    'dbname'         => 'DBNAME'
);
$db = Zend_Db::factory('Pdo_Mysql', $params);

Pdo_Mysql mit UTF8-Kodierung

Quelle: Zend_DB: Datenbankverbindungen mit Zeichensatz UTF-8

$params = array(
    'host'           => $mtDbServer,
    'username'       => $mtDbUser,
    'password'       => $mtDbPassword,
    'dbname'         => $mtDbName,
    'driver_options' => array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES UTF8;'),
);

$db = Zend_Db::factory('Pdo_Mysql', $params);

Zend_Db_Select

Ausführliche Hilfe: Zend_Db_Select

/*
 * Zend_Db_Select
 *
 * Eine Beispiel Datenbankabfrage
 */
try {
	$query = $db->select()
		 	->from( 'galerie', array( 'galerie_id', 'galerie_name' ) )
			->join( 'kategorie', 'kategorie_id = galerie_kategorie', 'kategorie_name' )
			->joinLeft( 'unterkategorie', 'unterkategorie_id = galerie_unterkategorie', 'unterkategorie_name' )
			->where( 'galerie_id = 11' )
			->order( array( 'galerie_name', 'kategorie_name', 'unterkategorie_name' ) ); 
			->limit( 5 )
	echo $query;
} catch ( Exception $e ) {
	echo $e;
}

Die Beispiel Abfrage sieht dabei wie folgt aus:

SELECT galerie.galerie_id, galerie.galerie_name, kategorie.kategorie_name, unterkategorie.unterkategorie_name
FROM galerie
JOIN kategorie ON kategorie_id = galerie_kategorie
JOIN LEFT unterkategorie ON unterkategorie_id = galerie_unterkategorie
WHERE galerie_id = '11'
ORDER BY galerie_name, kategorie_name, unterkategorie_name
LIMIT 5

Zend_Db_Table

Ausführliche Hilfe: Zend_Db_Table

/**
 * Vereinfachung der Zend-Klasse Zend_Db_Table
 *
 * Diese Klasse enthält Methoden um die Datenbank mittels des
 * Zend Frameworks zu verändern.
 */
class Db_SimpleTable
{

	/**
	 * Database table
	 *
	 * @var Zend_Db_Table
	 */
	private $_table;


	/**
	 * Construct Object
	 *
	 * @param	string	$name	Table name
	 * @return	void
	 * @throws	Zend_Exception, Zend_Db_Exception
	 */
	public function __construct( $name )
	{	
		// Zend DB
		require_once 'Zend/Loader.php';
		try {
			Zend_Loader::loadClass( 'Zend_Db_Table' );
			Zend_Loader::loadClass( 'Zend_Db_Table_Abstract' );
			Zend_Loader::loadClass( 'Zend_Registry' );
			
			Zend_Db_Table_Abstract::setDefaultAdapter( $GLOBALS['db'] );
	
			$this->_table = new Zend_Db_Table( $name );
		} catch( Exception $e ) {
			throw $e;
		}
	}

	/**
	 * Zeilen in die Tabelle einfügen
	 *
	 * @param	array	$data	Data
	 * @return	void
	 * @throws	Zend_Db_Exception
	 */
	public function insert( $data )
	{
		try {
			$this->_table->insert( $data );
		} catch( Exception $e ) {
			throw $e;
		}
	}
	
	/**
	 * Zeilen in der Tabelle aktualisieren
	 *
	 * @param	array	$data			Data
	 * @param	string	$where			E.g. 'photo_id = ?'
	 * @param	string	$whereValue		Where value
	 * @return	void
	 * @throws	Zend_Db_Exception
	 */
	public function update( $data, $where, $whereValue )
	{
		try {
			$where = $this->_table->getAdapter()->quoteInto( $where, $whereValue );		
			$this->_table->update( $data, $where );
		} catch( Exception $e ) {
			throw $e;
		}
	}
	
	/**
	 * Zeilen aus der Tabelle löschen
	 *
	 * @param	string	$where			E.g. 'photo_id = ?'
	 * @param	string	$whereValue		Where value
	 * @return	void
	 * @throws	Zend_Db_Exception
	 */
	public function delete( $where, $whereValue )
	{
		try {
			$where = $this->_table->getAdapter()->quoteInto( $where, $whereValue );		
			$this->_table->delete( $where );
		} catch( Exception $e ) {
			throw $e;
		}
	}

}

See also