<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>PHPBlog.it &#187; propel</title>
	<atom:link href="http://phpblog.it/tag/propel/feed/" rel="self" type="application/rss+xml" />
	<link>http://phpblog.it</link>
	<description>Solo un altro blog targato WordPress</description>
	<lastBuildDate>Mon, 21 May 2012 21:45:53 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>E&#8217; in vendita Practical symfony</title>
		<link>http://phpblog.it/2009/01/21/e-in-vendita-practical-symfony/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=e-in-vendita-practical-symfony</link>
		<comments>http://phpblog.it/2009/01/21/e-in-vendita-practical-symfony/#comments</comments>
		<pubDate>Wed, 21 Jan 2009 06:00:08 +0000</pubDate>
		<dc:creator>Daniel</dc:creator>
				<category><![CDATA[dalla rete]]></category>
		<category><![CDATA[Doctrine]]></category>
		<category><![CDATA[jobeet]]></category>
		<category><![CDATA[libro]]></category>
		<category><![CDATA[practical symfony]]></category>
		<category><![CDATA[propel]]></category>
		<category><![CDATA[symfony]]></category>

		<guid isPermaLink="false">http://phpblog.it/2009/01/21/e-in-vendita-practical-symfony/</guid>
		<description><![CDATA[A due anni dal rilascio del libro &#8220;The Definitive Guide to symfony&#8221; che introduce e guida il lettore nell&#8217;apprendimento di symfony 1.0 ecco pronto per il pubblico il libro &#8220;Practical symfony&#8220; che ha gli stessi obiettivi per la versione 1.2 del framework francese. Il libro basato sul Jobeet tutorial, di cui ho già parlato a [...]<div class="addthis_toolbox addthis_default_style " addthis:url='http://phpblog.it/2009/01/21/e-in-vendita-practical-symfony/' addthis:title='E&#8217; in vendita Practical symfony '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_button_google_plusone" g:plusone:size="medium"></a><a class="addthis_counter addthis_pill_style"></a></div>]]></description>
			<content:encoded><![CDATA[<p>A due anni dal rilascio del libro &#8220;<strong>The Definitive Guide to symfony</strong>&#8221; che introduce e guida il lettore nell&#8217;apprendimento di symfony 1.0 ecco pronto per il pubblico il <a href="http://www.symfony-project.org/blog/2009/01/20/the-practical-symfony-book-is-now-also-available-for-doctrine">libro &#8220;<strong>Practical symfony</strong>&#8220;</a> che ha gli stessi obiettivi per la versione 1.2 del framework francese. Il libro basato sul Jobeet tutorial, di cui <a title="Jobeet in italiano" href="http://phpblog.it/2009/01/12/jobeet-tutorial-traduzione-completata/">ho già parlato a riguardo della traduzione italiana</a>, prendendo in considerazione i molti feedback raccolti dalla comunità durante il periodo di pubblicazione del tutorial stesso è <strong>disponibile in due versioni: quella con <a title="Propel" href="http://www.lulu.com/content/5724869">Propel</a> e quella con <a title="Doctrine" href="http://www.lulu.com/content/5784717">Doctrine</a></strong>. Le due versioni sono disponibili per la stampa ondemand su Lulu.com al costo di $33.60.</p>
<div class="addthis_toolbox addthis_default_style " addthis:url='http://phpblog.it/2009/01/21/e-in-vendita-practical-symfony/' addthis:title='E&#8217; in vendita Practical symfony '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_button_google_plusone" g:plusone:size="medium"></a><a class="addthis_counter addthis_pill_style"></a></div>]]></content:encoded>
			<wfw:commentRss>http://phpblog.it/2009/01/21/e-in-vendita-practical-symfony/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Propel: AND e OR</title>
		<link>http://phpblog.it/2008/11/05/propel-and-e-or/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=propel-and-e-or</link>
		<comments>http://phpblog.it/2008/11/05/propel-and-e-or/#comments</comments>
		<pubDate>Wed, 05 Nov 2008 05:00:32 +0000</pubDate>
		<dc:creator>Daniel</dc:creator>
				<category><![CDATA[phpblog]]></category>
		<category><![CDATA[and]]></category>
		<category><![CDATA[or]]></category>
		<category><![CDATA[ORM]]></category>
		<category><![CDATA[propel]]></category>
		<category><![CDATA[symfony]]></category>

		<guid isPermaLink="false">http://phpblog.it/2008/11/05/propel-and-e-or/</guid>
		<description><![CDATA[Le condizioni multiple per una colonna utilizzando Propel come ORM non sono proprio immediate. Lavorando con symfony, che usa proprio Propel, mi sono avvicinato all&#8217;orm grazie al libro relativo al framework di sviluppo per PHP5. Chiaramente le nozioni riportate sono relative agli esempi presi in esame di volta in volta e coprono le funzioni principali [...]<div class="addthis_toolbox addthis_default_style " addthis:url='http://phpblog.it/2008/11/05/propel-and-e-or/' addthis:title='Propel: AND e OR '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_button_google_plusone" g:plusone:size="medium"></a><a class="addthis_counter addthis_pill_style"></a></div>]]></description>
			<content:encoded><![CDATA[<p>Le <strong>condizioni multiple per una colonna</strong> utilizzando <a href="http://propel.phpdb.org/trac/" title="Propel"><strong>Propel come ORM</strong></a> non sono proprio immediate. Lavorando con symfony, che usa proprio Propel, mi sono avvicinato all&#8217;orm grazie al <a href="http://www.symfony-project.org/book/1_1/08-Inside-the-Model-Layer" title="symfony model layer">libro relativo al framework</a> di sviluppo per PHP5. Chiaramente le nozioni riportate sono relative agli esempi presi in esame di volta in volta e coprono le funzioni principali senza, giustamente, andare troppo nei particolari (da ricercare nella documentazione di Propel). Questo ha fatto sì che mi imbattessi nel problema di applicare condizioni multiple in una query per una stessa colonna.</p>
<p><span id="more-190"></span> Usiamo un semplice esempio per mostrare la strada sbagliata, che potrebbe sembrare la più logica non conoscendo Propel, e quella giusta. Ipotizziamo di avere una semplice tabella con due soli campi: &#8220;nome&#8221; e &#8220;numero&#8221;. Da questa tabella vogliamo estrarre solo i record che hanno un valore di &#8220;numero&#8221; compreso tra 11 e 20 (con estremi esclusi).</p>
<p><code>SELECT *<br />
FROM table<br />
WHERE numero &gt; 11 AND numero &lt; 20</code></p>
<p>La <strong>traduzione errata,</strong> più istintiva, è qualcosa di simile alla seguente:</p>
<p><code>$c = new Criteria();<br />
$c-&gt;add(TablePeer::NUMERO, 11, Criteria::GREATER_THAN);<br />
$c-&gt;add(TablePeer::NUMERO, 20, Criteria::LESS_THAN);<br />
...</code></p>
<p>dove si pensa che ogni <em>add</em> vada ad aggiungere una condizione conbinandola alle altre con un AND. <strong>Tutto questo però è sbagliato visto che aggiungendo in questo modo più condizioni sulla stessa colonna &#8220;sovrascrive&#8221; le precedenti e lascia utilizzata solo l&#8217;ultima.</strong> L&#8217; equivalente di:</p>
<p><code>SELECT *<br />
FROM table<br />
WHERE numero &lt; 20</code></p>
<p>che di sicuro non è quello che vogliamo. <strong>Come fare allora? </strong>Bisogna ricorrere all&#8217;utilizzo degli <a href="http://propel.phpdb.org/docs/user_guide/chapters/FindingObjects.html" title="Criterion objects">oggetti di tipo Criterion</a> usando il metodo Criterion::addAnd():</p>
<p><code>$c = new Criteria();<br />
$criterion = $c-&gt;getNewCriterion(TablePeer::NUMERO, 11, Criteria::GREATER_THAN);<br />
$criterion-&gt;addAnd($c-&gt;getNewCriterion(TablePeer::NUMERO, 20, Criteria::LESS_THAN));<br />
$c-&gt;add($criterion);<br />
...</code></p>
<p>In questo modo le due condizioni verranno prese in considerazione allo stesso modo e collegate con un AND. <strong>Abbiamo ottenuto l&#8217;interpretazione corretta.</strong> Per lavorare con l&#8217;OR basta cambiare il metodo utilizzato da <code>$criterion-&gt;addAnd</code> a <code>$criterion-&gt;addOr.</code></p>
<div class="addthis_toolbox addthis_default_style " addthis:url='http://phpblog.it/2008/11/05/propel-and-e-or/' addthis:title='Propel: AND e OR '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_button_google_plusone" g:plusone:size="medium"></a><a class="addthis_counter addthis_pill_style"></a></div>]]></content:encoded>
			<wfw:commentRss>http://phpblog.it/2008/11/05/propel-and-e-or/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Propel, Doctrine e sfPropelFinder: ORM a confronto</title>
		<link>http://phpblog.it/2008/07/10/propel-doctrine-e-sfpropelfinder-orm-a-confronto/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=propel-doctrine-e-sfpropelfinder-orm-a-confronto</link>
		<comments>http://phpblog.it/2008/07/10/propel-doctrine-e-sfpropelfinder-orm-a-confronto/#comments</comments>
		<pubDate>Thu, 10 Jul 2008 05:00:30 +0000</pubDate>
		<dc:creator>Daniel</dc:creator>
				<category><![CDATA[dalla rete]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[Doctrine]]></category>
		<category><![CDATA[propel]]></category>
		<category><![CDATA[sfPropelFinder]]></category>

		<guid isPermaLink="false">http://phpblog.it/2008/07/10/propel-doctrine-e-sfpropelfinder-orm-a-confronto/</guid>
		<description><![CDATA[François Zaninotto affronta lo spinoso problema che all&#8217;inizio di un progetto ci si può porre: quale ORM utilizzare? Symfony di default propone Propel anche nella versione 1.1, ma questa volta come plugin aprendo la strada a Doctrine che farà l&#8217;attore principale dalla versione 1.2. Non esistono molti Object Relational Mapping layers in PHP5 di una [...]<div class="addthis_toolbox addthis_default_style " addthis:url='http://phpblog.it/2008/07/10/propel-doctrine-e-sfpropelfinder-orm-a-confronto/' addthis:title='Propel, Doctrine e sfPropelFinder: ORM a confronto '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_button_google_plusone" g:plusone:size="medium"></a><a class="addthis_counter addthis_pill_style"></a></div>]]></description>
			<content:encoded><![CDATA[<p>François Zaninotto affronta lo spinoso problema che all&#8217;inizio di un progetto ci si può porre: <strong>quale ORM utilizzare?</strong> Symfony di default propone Propel anche nella versione 1.1, ma questa volta come plugin aprendo la strada a Doctrine che farà l&#8217;attore principale dalla versione 1.2.</p>
<p><span id="more-164"></span> Non esistono molti <strong>Object Relational Mapping layers</strong> in PHP5 di una certa solidità. Nel post vengono considerati i due ORM più famosi:</p>
<ul>
<li><strong><a href="http://propel.phpdb.org/trac/">Propel</a></strong> è un ORM che permette l&#8217;accesso al database usando un insieme di oggetti, mette a disposizione delle API per scrivere e leggere i dati. Propel permette allo sviluppatore di lavorare con il database nella stessa maniera con cui si lavora con le altre classi e oggetti in PHP.</li>
<li><strong><a href="http://www.phpdoctrine.org/">Doctrine</a></strong> è un ORM che si appoggia nella parte superiore del database abstraction layer. Una delle sue principali particolarità è la possibilità di scrivere query in una specie di dialetto SQL chiamato DQL. Questo permette allo sviluppatore di di sfruttare un&#8217;alternativa all&#8217;SQL per mantenere la massima flessibilità evitando la duplicazione del codice.</li>
</ul>
<p>Viene inoltre considerato <strong><a href="http://trac.symfony-project.org/wiki/sfPropelFinderPlugin">sfPropelFinder</a></strong> un plugin aggiuntivo per Propel che mette a disposizione una semplice API per lavorare con gli oggetti di Propel.La comparazione viene fatta analizzando il modo di agire in alcune situazioni ricorrenti del modello Article/Comment dei vari ORM.</p>
<p>Rimando all&#8217;originale per la lettura completa: <a href="http://redotheweb.com/2008/07/08/comparing-propel-doctrine-and-sfpropelfinder/" title="Comparing Propel, Doctrine and sfPropelFinder">Comparing Propel, Doctrine and sfPropelFinder</a>.</p>
<div class="addthis_toolbox addthis_default_style " addthis:url='http://phpblog.it/2008/07/10/propel-doctrine-e-sfpropelfinder-orm-a-confronto/' addthis:title='Propel, Doctrine e sfPropelFinder: ORM a confronto '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_button_google_plusone" g:plusone:size="medium"></a><a class="addthis_counter addthis_pill_style"></a></div>]]></content:encoded>
			<wfw:commentRss>http://phpblog.it/2008/07/10/propel-doctrine-e-sfpropelfinder-orm-a-confronto/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Symfony 1.1: I18n dei Propel form</title>
		<link>http://phpblog.it/2008/06/16/symfony-11-i18n-dei-propel-form/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=symfony-11-i18n-dei-propel-form</link>
		<comments>http://phpblog.it/2008/06/16/symfony-11-i18n-dei-propel-form/#comments</comments>
		<pubDate>Mon, 16 Jun 2008 05:00:54 +0000</pubDate>
		<dc:creator>Daniel</dc:creator>
				<category><![CDATA[dalla rete]]></category>
		<category><![CDATA[1.1]]></category>
		<category><![CDATA[i18n]]></category>
		<category><![CDATA[propel]]></category>
		<category><![CDATA[symfony]]></category>

		<guid isPermaLink="false">http://phpblog.it/2008/06/16/symfony-11-i18n-dei-propel-form/</guid>
		<description><![CDATA[Dal blog di Symfony potete leggere un interessante articolo sull&#8217;internazionalizzazione dei form che nella versione 1.1 del framework è molto più immediata  di quanto lo fosse con la 1.0. Nel caso trattato si lavora su un form per l&#8217;edit di articoli in modalità multilingua, di grosso aiuto sono symfony propel:build-all che genera il model Propel [...]<div class="addthis_toolbox addthis_default_style " addthis:url='http://phpblog.it/2008/06/16/symfony-11-i18n-dei-propel-form/' addthis:title='Symfony 1.1: I18n dei Propel form '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_button_google_plusone" g:plusone:size="medium"></a><a class="addthis_counter addthis_pill_style"></a></div>]]></description>
			<content:encoded><![CDATA[<p>Dal blog di Symfony potete leggere un <strong><a href="http://www.symfony-project.org/blog/2008/06/12/internationalize-your-propel-forms" title="interessante articolo sull'internazionalizzazione dei form">interessante articolo sull&#8217;internazionalizzazione dei form</a></strong> che nella <strong>versione 1.1 del framework</strong> è molto più immediata  di quanto lo fosse con la 1.0. Nel caso trattato si lavora su un form per l&#8217;edit di articoli in modalità multilingua, di grosso aiuto sono</p>
<p><code>symfony propel:build-all</code></p>
<p>che genera il model Propel e le classi dei form, oltre a</p>
<p><code>symfony generate:crud frontend</code></p>
<p>per creare l&#8217;interfaccia web per il list, create, update, e delete degli articoli. Buona lettura!</p>
<div class="addthis_toolbox addthis_default_style " addthis:url='http://phpblog.it/2008/06/16/symfony-11-i18n-dei-propel-form/' addthis:title='Symfony 1.1: I18n dei Propel form '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_button_google_plusone" g:plusone:size="medium"></a><a class="addthis_counter addthis_pill_style"></a></div>]]></content:encoded>
			<wfw:commentRss>http://phpblog.it/2008/06/16/symfony-11-i18n-dei-propel-form/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

