Quick links: Content - sections - sub sections
EN

Trace:

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
Next revisionBoth sides next revision
en:tutorial:using-dao [2007/01/13 21:28] – created doublefaceen:tutorial:using-dao [2007/01/13 22:09] doubleface
Line 12: Line 12:
  
 In the DAO XML file, you can also define your own access methods to data, and jDao will generate the corresponding methods and requests in the DAO factory. In the DAO XML file, you can also define your own access methods to data, and jDao will generate the corresponding methods and requests in the DAO factory.
 +
 +
 +===== creating a first DAO =====
 +
 +
 +You have command to be able to create a DAO file, based on an existing table. It has this following syntax: 
 +
 +   createdao //module_name// //dao_name// //table_name//
 +
 +
 +A news table has been created before, and we will create a DAO named "news", in the "news" module. Then type: 
 +
 +<code bash>
 +   php jelix.php createdao news news news
 +</code>
 +
 + 
 +You obtain an actu.org/modules/news/daos/news.dao.xml file. (you can of course create it by hand). 
 +
 +Its content is what follows :
 +<code xml>
 +<?xml version="1.0" encoding="iso-8859-1"?>
 +<dao xmlns="http://jelix.org/ns/dao/1.0">
 +  <datasources>
 +    <primarytable name="news" realname="news" primarykey="id_news" />
 +  </datasources>
 +  <record>
 +    <property name="id_news" fieldname="id_news" datatype="autoincrement"/>
 +    <property name="sujet" fieldname="sujet" datatype="string"/>
 +    <property name="texte" fieldname="texte" datatype="string"/>
 +    <property name="news_date" fieldname="news_date" datatype="date"/>
 +  </record>
 +</dao>
 +
 +</code>
 +
 +This is a very simple content, and of course there are other attributes and tags to enrich it and customize it. For the moment, we will leave it there.
 +
 +
 +===== List the news =====
 +
 +We will now use this DAO to retrieve the list of news. We thus will request from jDao the factory of this DAO, and call its preset method findAll. With this intention, we use jDao::get() :
 +
 +<code php>
 +  $fact = jDao::get('news~news');
 +  $liste = $fact->findAll();
 +</code>
 +
 +As parameter of jDao::get(), we give the DAO selector (which is named "news", and is in the news module): “news~news”. It gives us the factory of this DAO. And by calling the findAll method, we retrieve all the list of records.
 +
 +Actually, this is not really a list, but a jDbResultSet, which is an iterator on the results of the corresponding request.
 +
 +Let's integrate it in our controller :
 +
 +<code php>
 +    function index() {
 +        $rep = $this->getResponse('html');
 +        $rep->title = 'Last news';
 +        $rep->bodyTpl = 'newslist';
 +
 +        $fact = jDao::get('news~news');
 +        $list = $fact->findAll();
 +
 +        $rep->body->assign('list', $list);
 +
 +        return $rep;
 +    }
 +</code>
 +
 +As stated ealier, the body property of jResponseHtml is a jTpl object (template engine). We give the list to it in a "$list" template var, to be able to use it in the template. The template becomes :
 +
 +<code>
 +<h2>Last news</h2>
 +
 +<table>
 +{foreach $list as $news}
 +<tr>
 +  <td>{$news->subject}</td><td>{$news->news_date}</td>
 +</tr>
 +{/foreach}
 +</table>
 +</code>
 +
 +You discover here the {foreach} template tag, which
 +Vous découvrez ici le tag de template {foreach}, which is exactly like the php foreach. To display some values, you only have to put the name of the template var after a $ and between {}.
 +
 +The list returned by findAll is a list of record objects, as defined in the xml file. The have then the id_news, subject, text and news_date properties.
 +
 +Display the page one more time :
 +
 +   http://localhost/jelix/actu.org/www/index.php .
 +
 +You should see the list of news.
 +
 +
 +
 +----
 +   * Next : [[en:tutorial:news-form|Creation of a form]]
 +   * Previous : [[en:tutorial:database-config|CConfiguration of the database]]
 +   * [[en:tutorial|Back to the summary]]

en/tutorial/using-dao.txt · Last modified: 2007/09/17 22:42 by 127.0.0.1

Recent changes RSS feed Creative Commons License