2. Jisse Reitsma
● Mede-oprichter en developer van Yireo
MageBridge, Vm2Mage, SimpleLists
Dynamic404, SSL Redirect, ...
● Programmeur
Joomla!, Magento, PHP, Java, Android
● Freelance trainer
Joomla! development, Magento development
april 2012 Joomla! Database Abstractie
3. Deze presentatie
● Deel 1: Over database abstractie
● Deel 2: Gebruik van JDatabase
● Deel 3: Praktisch met JDatabaseQuery
april 2012 Joomla! Database Abstractie
5. Deel 1:
Over database abstractie
april 2012 Joomla! Database Abstractie
6. Database abstractie (1)
● Meerdere databases
– MySQL, MSSQL, Oracle, PostgreSQL
– MS Access, SQLite, Sybase
● Gebruik SQL zo algemeen mogelijk
april 2012 Joomla! Database Abstractie
7. Database abstractie (2)
● Joomla! biedt momenteel al support voor:
– MySQL (mysql, mysqli)
– Microsoft SQL (sqlsrv)
– Microsoft SQL Azure (sqlzure)
april 2012 Joomla! Database Abstractie
9. #__
● Database table prefix
● Tijdens Joomla! 2.5 wordt prefix gegeneerd
april 2012 Joomla! Database Abstractie
10. JTable
● Onderdeel van MVC-architectuur
● Gekoppeld aan JModel (model)
● “Interface” voor specifieke database tabel
● Nieuw in Joomla! 2.5: JTableNested
april 2012 Joomla! Database Abstractie
11. JDatabase
● Aanbevolen:
$db = JFactory::getDBO();
● Niet doen:
$db = JDatabase::getInstance();
april 2012 Joomla! Database Abstractie
12. JDatabaseQuery
● Nieuw in Joomla! 2.5
● OOP-manier om query in elkaar te zetten
● Geen directe SQL-statements meer
april 2012 Joomla! Database Abstractie
14. Deel 2:
Gebruik van JDatabase
april 2012 Joomla! Database Abstractie
15. Gebruik in Joomla! 1.5 (1)
● Ophalen van $db en het escapen van $name
$db = JFactory::getDBO();
$name = $db>Quote($name);
april 2012 Joomla! Database Abstractie
16. Gebruik in Joomla! 1.5 (2)
● Een query als string opbouwen en klaarzetten
$query = “SELECT * FROM #__users”
. “ WHERE `name`=”.$name;
$db>setQuery($query);
april 2012 Joomla! Database Abstractie
17. Gebruik in Joomla! 2.5 (1)
● Een lege query beginnen
$db = JFactory::getDBO();
$query = $db>getQuery(true);
● Of op een andere manier
$query = new JDatabaseQuery();
april 2012 Joomla! Database Abstractie
18. Gebruik in Joomla! 2.5 (2)
● De query via methodes in elkaar
$query>select('*');
$query>from('#__users');
$query>where('name='.$name);
$db>setQuery($query);
april 2012 Joomla! Database Abstractie
25. JOINs maken (2)
● $query = $db>getQuery(true);
● $query>select('count(*)');
● $query>from('#__xyz_items AS i');
● $query>leftJoin('#__xyz_categories
AS c ON i.category_id = c.id');
april 2012 Joomla! Database Abstractie
26. Nested sets
● Klasse JTableNested
– Niet voor JOINs, maar node-structuren
JTableCategory, JTableMenu, JTableAsset
–
● jimport('joomla.database.tablenested');
april 2012 Joomla! Database Abstractie