Successfully reported this slideshow.

Joomla! 2.5 Database Abstraction

7,293 views

Published on

Dutch presentation for the JoomlaDays 2012 in The Netherlands; presentation given by Yireo-founder Jisse Reitsma

  • Be the first to comment

Joomla! 2.5 Database Abstraction

  1. 1. Joomla! database abstractieapril 2012 Joomla! Database Abstractie
  2. 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. 3. Deze presentatie● Deel 1: Over database abstractie● Deel 2: Gebruik van JDatabase● Deel 3: Praktisch met JDatabaseQuery april 2012 Joomla! Database Abstractie
  4. 4. (vragen?)april 2012 Joomla! Database Abstractie
  5. 5. Deel 1: Over database abstractieapril 2012 Joomla! Database Abstractie
  6. 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. 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
  8. 8. Database Abstraction Layer (DAL)● AdoDb● Zend_Db● PDO april 2012 Joomla! Database Abstractie
  9. 9. #__● Database table prefix● Tijdens Joomla! 2.5 wordt prefix gegeneerd april 2012 Joomla! Database Abstractie
  10. 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. 11. JDatabase● Aanbevolen: $db = JFactory::getDBO(); ● Niet doen: $db = JDatabase::getInstance(); april 2012 Joomla! Database Abstractie
  12. 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
  13. 13. (vragen?)april 2012 Joomla! Database Abstractie
  14. 14. Deel 2: Gebruik van JDatabaseapril 2012 Joomla! Database Abstractie
  15. 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. 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. 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. 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
  19. 19. JDatabase methoden – setQuery() – query() – loadAssocList() – loadResult() – getErrorMsg() – Quote()april 2012 Joomla! Database Abstractie
  20. 20. JDatabaseQuery methoden – select(), insert(), delete(), update() – from(), where() – quote() – leftJoin(), rightJoin(), innerJoin(), outerJoin() – order(), having(), group()april 2012 Joomla! Database Abstractie
  21. 21. JTable methoden – load() – delete() – bind() + check() + store() = save() – getFields() – getKeyName()april 2012 Joomla! Database Abstractie
  22. 22. (vragen?)april 2012 Joomla! Database Abstractie
  23. 23. Deel 3: Praktisch met JDatabaseQueryapril 2012 Joomla! Database Abstractie
  24. 24. JOINs maken (1)● Verschillende join-mogelijkheden – innerJoin($join)  => join(INNER, $join) – outerJoin($join)  => join(OUTER, $join) – leftJoin($join)  => join(LEFT, $join) – rightJoin($join)  => join(RIGHT, $join) april 2012 Joomla! Database Abstractie
  25. 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. 26. Nested sets● Klasse JTableNested – Niet voor JOINs, maar node-structuren JTableCategory, JTableMenu, JTableAsset –● jimport(joomla.database.tablenested); april 2012 Joomla! Database Abstractie
  27. 27. Andere databases benaderen● $options = array(   driver => mysqli,   host => localhost,   user => foo, password => bar,   database => wordpress,   prefix => wp_, );● $db = JDatabase::getInstance($options); april 2012 Joomla! Database Abstractie
  28. 28. Een query debuggen● $query­>select(*)­>from(#__content);● echo $query; // __toString(); april 2012 Joomla! Database Abstractie
  29. 29. (vragen?)april 2012 Joomla! Database Abstractie

×