Databáze - úvod
Níže je uveden pouze náhled materiálu. Kliknutím na tlačítko 'Stáhnout soubor' stáhnete kompletní formátovaný materiál ve formátu PDF.
'string', 5000);
Model Forum_Board
$this->hasColumn('updated', 'integer', 10)
$this->hasColumn('closed', 'integer', 1);
}
public function setUp(){
$this->hasOne('Forum_Board as Board',
array(
'local' => 'board_id',
'foreign' => 'id'
)
);
$this->hasOne('User',
array(
'local' => 'user_id',
'foreign' => 'id'
)
);
}
}
'string', 5000);
}
public function setUp(){
$this->hasMany('Forum_Thread as
Threads',
array(
'local' => 'id',
'foreign' => 'board_id'
)
);
}
}
User definován
jinde
Ukázka použítí
$board =
new Forum_Board();
$board->name = 'Some board';
$board->Threads[0]->title = 'new thread 1';
$board->Threads[1]->title = 'new thread 2';
$user =
new User();
$user->username = 'jwage';
$board->Threads[0]->User = $user;
$board->Threads[1]->User = $user;
$board->Threads[1]->User = $user
$board->save();
Práce s modelem
// test.php
$user =
new User();
$user['username'] = 'jwage';
$user['password'] = 'changeme';
$email = $user->Email;
$email = $user->get('Email');
$email = $user['Email'];
Ekvivalentní
Ekvivalentní
$user->save();
Dotazování a další operace
// select pres primarni klic
$user = Doctrine_Core::getTable('User')->find(1);
echo $user->Email['address'];
echo $user->Phonenumbers[0]->phonenumber;
// query
$q = Doctrine_Query::create()
->from('User u')
->leftJoin('u.Email e')
->leftJoin('u.Phonenumbers p')
->where('u.id = ?', 1);
$user = $q->fetchOne();
echo $user->Email['address'];
echo $user->Phonenumbers[0]['phonenumber'];
// test.php
// update
$user->Email['address'] = 'koskenkorva@drinkmore.info';
$user->Phonenumbers[0]['phonenumber'] = '123123';
$user->save();
// smazani
$user->Email->delete();
DB A OBJEKTOVÉ PROG.
VZORY
Abstrakce
Aplikační logika
DB abstraktní vrstva
MySQL
PosgreSQL
Oracle
Sybase
....
Vzor Factory
•connect($param)
•query($sql)
•]
DBLayer
Implements
Abstraktní vrstva
Implementace X
Implementace Y
•connect($param)
•query($sql)
•]
PGDBLayer
•connect($param)
•query($sql)
•]
MYSQLDBLayer
kuk kosik_objektovy1.5.php
Implementace X
Implementace Y
Vzor Factory
Používá se tehdy, když chceme získat instanci
nějakého objektu, ale nechceme se starat o to, jak
tento objekt vytvořit
Příklad:
– chceme přistupovat k databázi
– databází je ale mnoho různých druhů (mysql, oracle, ])