<?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>Symfony-IT &#187; orm</title>
	<atom:link href="http://www.symfony.it/categoria/orm/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.symfony.it</link>
	<description>Just another Symfony Framework weblog</description>
	<lastBuildDate>Mon, 26 Jul 2010 09:23:28 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>test complessi con sfTesterDoctrine</title>
		<link>http://www.symfony.it/articoli/301/test-complessi-con-sftesterdoctrine/</link>
		<comments>http://www.symfony.it/articoli/301/test-complessi-con-sftesterdoctrine/#comments</comments>
		<pubDate>Mon, 26 Jul 2010 09:23:28 +0000</pubDate>
		<dc:creator>garakkio</dc:creator>
				<category><![CDATA[doctrine]]></category>
		<category><![CDATA[test]]></category>
		<category><![CDATA[tips]]></category>

		<guid isPermaLink="false">http://www.symfony.it/?p=301</guid>
		<description><![CDATA[A volte può capitare di dover testare delle condizioni complesse su un oggetto Doctrine. In questi casi, il semplice array solitamente usato col metodo check() può non bastare. Per esempio mi è capitato recentemente di dover testare alcuni campi data con una condizione >= (maggiore o uguale). Ma lo stesso metodo check() è abbastanza flessibile [...]]]></description>
			<content:encoded><![CDATA[<p>A volte può capitare di dover testare delle condizioni complesse su un oggetto Doctrine. In questi casi, il semplice array solitamente usato col metodo <kbd>check()</kbd> può non bastare. Per esempio mi è capitato recentemente di dover testare alcuni campi data con una condizione <kbd>>=</kbd> (maggiore o uguale).<br />
Ma lo stesso metodo <kbd>check()</kbd> è abbastanza flessibile da accettare come secondo parametro non solo un array, ma anche un oggetto <kbd>Doctrine_Query</kbd>. Basterà quindi costruire le condizioni in questo modo e passarle, e il gioco è fatto.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.symfony.it/articoli/301/test-complessi-con-sftesterdoctrine/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Propel in Symfony 2.0</title>
		<link>http://www.symfony.it/articoli/257/propel-in-symfony-2-0/</link>
		<comments>http://www.symfony.it/articoli/257/propel-in-symfony-2-0/#comments</comments>
		<pubDate>Mon, 24 May 2010 07:35:24 +0000</pubDate>
		<dc:creator>garakkio</dc:creator>
				<category><![CDATA[orm]]></category>
		<category><![CDATA[propel]]></category>
		<category><![CDATA[symfony 2.0]]></category>

		<guid isPermaLink="false">http://www.symfony.it/?p=257</guid>
		<description><![CDATA[Sembra che la tanto attesa nuova versione di Symfony supporterà, come l&#8217;attuale, entrambi gli ORM. Se infatti Doctrine, ormai legato a doppio filo al framework, non è mai stato in dubbio, Propel sembrava rimasto indietro. Invece, pochi giorni fa, l&#8217;instancabile François Zaninotto ha pubblicato il suo fork con PropelBundle.]]></description>
			<content:encoded><![CDATA[<p>Sembra che la tanto attesa nuova versione di Symfony supporterà, come l&#8217;attuale, entrambi gli ORM. Se infatti Doctrine, ormai legato a doppio filo al framework, non è mai stato in dubbio, Propel sembrava rimasto indietro. Invece, pochi giorni fa, l&#8217;instancabile François Zaninotto ha pubblicato il suo <a href="http://github.com/fzaninotto/symfony">fork con PropelBundle</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.symfony.it/articoli/257/propel-in-symfony-2-0/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>È uscito Propel 1.5</title>
		<link>http://www.symfony.it/articoli/254/e-uscito-propel-1-5/</link>
		<comments>http://www.symfony.it/articoli/254/e-uscito-propel-1-5/#comments</comments>
		<pubDate>Mon, 26 Apr 2010 11:42:27 +0000</pubDate>
		<dc:creator>garakkio</dc:creator>
				<category><![CDATA[orm]]></category>
		<category><![CDATA[propel]]></category>

		<guid isPermaLink="false">http://www.symfony.it/?p=254</guid>
		<description><![CDATA[L&#8217;atteso rilascio della nuova versione di Propel è ufficiale proprio oggi. La novità maggiore è nella nuova API di oggetti Query, che si rifanno in parte a quelli di Doctrine, ma usando un&#8217;interfaccia fluida invece di un linguaggio pseudo-SQL. Ci sono inoltre nuovi behavior e l&#8217;ereditarietà concreta per le tabelle. Il tutto è stato mantenuto [...]]]></description>
			<content:encoded><![CDATA[<p>L&#8217;atteso rilascio della nuova versione di Propel è ufficiale proprio oggi. La novità maggiore è nella nuova API di oggetti Query, che si rifanno in parte a quelli di Doctrine, ma usando un&#8217;interfaccia fluida invece di un linguaggio pseudo-SQL. Ci sono inoltre nuovi behavior e l&#8217;ereditarietà concreta per le tabelle. Il tutto è stato mantenuto retrocompatibile con la versione 1.4. Già da ora è possibile usare Propel 1.5 in un progetto symfony, grazie a <a href="http://www.symfony-project.org/plugins/sfPropel15Plugin">sfPropel15Plugin</a>.<br />
Ecco la <a href="http://www.propelorm.org/wiki/Documentation/1.5/WhatsNew">lista completa delle novità</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.symfony.it/articoli/254/e-uscito-propel-1-5/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>&#8220;Di più con symfony&#8221; su Amazon come presente per l&#8217;anno nuovo!</title>
		<link>http://www.symfony.it/articoli/231/di-piu-con-symfony-su-amazon-come-presente-per-lanno-nuovo/</link>
		<comments>http://www.symfony.it/articoli/231/di-piu-con-symfony-su-amazon-come-presente-per-lanno-nuovo/#comments</comments>
		<pubDate>Wed, 30 Dec 2009 15:03:12 +0000</pubDate>
		<dc:creator>fullo</dc:creator>
				<category><![CDATA[doctrine]]></category>
		<category><![CDATA[libri]]></category>
		<category><![CDATA[programmazione]]></category>
		<category><![CDATA[symfony]]></category>
		<category><![CDATA[amazon]]></category>
		<category><![CDATA[di più con symfony]]></category>
		<category><![CDATA[documentazione]]></category>
		<category><![CDATA[libro]]></category>
		<category><![CDATA[more with symfony]]></category>

		<guid isPermaLink="false">http://www.symfony.it/?p=231</guid>
		<description><![CDATA[È ufficialmente disponibile su Amazon, la nuova traduzione italiana dell&#8217;advent calendar intitolato More with Symfony e rilasciato agli inizi di dicembre in formato digitale in più lingue e cartaceo nella sola lingua inglese. Il libro approfondisce argomenti come il routing, la nuova gestione delle email di symfony 1.4, gli internals di symfony e come estendere [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.amazon.com/gp/product/2918390216?ie=UTF8&#038;tag=fullo-20&#038;linkCode=as2&#038;camp=1789&#038;creative=390957&#038;creativeASIN=2918390216"><img src="http://www.symfony.it/wp-content/uploads/2009/12/51hN+Ml-NmL._SL160_.jpg" alt="Di più con symfony, il libro" title="51hN+Ml-NmL._SL160_" width="124" height="160" class="alignleft size-full wp-image-233" /></a><img src="http://www.assoc-amazon.com/e/ir?t=fullo-20&#038;l=as2&#038;o=1&#038;a=2918390216" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" align="left" /> È ufficialmente disponibile su Amazon, la nuova <a href="http://www.amazon.com/gp/product/2918390216?ie=UTF8&#038;tag=fullo-20&#038;linkCode=as2&#038;camp=1789&#038;creative=390957&#038;creativeASIN=2918390216">traduzione italiana</a> dell&#8217;<a href="http://www.symfony-project.org/advent_calendar/">advent calendar</a> intitolato <em>More with Symfony</em> e rilasciato agli inizi di dicembre in formato digitale in più lingue e <a href="http://www.amazon.com/gp/product/2918390178?ie=UTF8&#038;tag=fullo-20&#038;linkCode=as2&#038;camp=1789&#038;creative=390957&#038;creativeASIN=2918390178">cartaceo nella sola lingua inglese</a><img src="http://www.assoc-amazon.com/e/ir?t=fullo-20&#038;l=as2&#038;o=1&#038;a=2918390178" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />. </p>
<p>Il libro approfondisce argomenti come il <a href="http://www.symfony-project.org/advent_calendar/2/it">routing</a>, la nuova<a href="http://www.symfony-project.org/advent_calendar/5/it"> gestione delle email di symfony 1.4</a>, gli <a href="http://www.symfony-project.org/advent_calendar/16/it">internals di symfony</a> e come <a href="http://www.symfony-project.org/advent_calendar/11/it">estendere</a> <a href="http://www.symfony-project.org/advent_calendar/14/it">Doctrine</a>.</p>
<p>Il libro è stato tradotto dalla <a href="http://groups.google.com/group/symfony-it">comunità italiana di Symfonisti</a> che si è prodigata per renderlo disponibile immediatamente insieme alla versione ufficiale.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.symfony.it/articoli/231/di-piu-con-symfony-su-amazon-come-presente-per-lanno-nuovo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Propel 1.4 è qui</title>
		<link>http://www.symfony.it/articoli/212/propel-1-4-e-qui/</link>
		<comments>http://www.symfony.it/articoli/212/propel-1-4-e-qui/#comments</comments>
		<pubDate>Mon, 05 Oct 2009 06:44:34 +0000</pubDate>
		<dc:creator>garakkio</dc:creator>
				<category><![CDATA[orm]]></category>
		<category><![CDATA[propel]]></category>

		<guid isPermaLink="false">http://www.symfony.it/?p=212</guid>
		<description><![CDATA[Come annunciato in precedenti post, Propel è risuscitato. La prima mossa, di pochi giorni fa, è stata la partenza del ramo 1.4, che ha iniziato con l&#8217;implementazione dei comportamenti (behaviour), del tutto simili a quelli di Doctrine. Già in symfony 1.3 avremo l&#8217;opportunità di vederlo in azione, mentre per i progetti ancorati a symfony 1.2 [...]]]></description>
			<content:encoded><![CDATA[<p>Come annunciato in <a href="http://www.symfony.it/articoli/187/propel-e-morto-evviva-propel/">precedenti</a> <a href="http://www.symfony.it/articoli/190/irc-meeting-per-il-futuro-di-propel/">post</a>, Propel è risuscitato. La prima mossa, di pochi giorni fa, è stata la partenza del ramo 1.4, che ha iniziato con l&#8217;implementazione dei comportamenti (behaviour), del tutto simili a quelli di Doctrine. Già in symfony 1.3 avremo l&#8217;opportunità di vederlo in azione, mentre per i progetti ancorati a symfony 1.2 c&#8217;è un apposito <a href="http://www.symfony-project.org/plugins/sfPropel14Plugin">plugin</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.symfony.it/articoli/212/propel-1-4-e-qui/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>IRC Meeting per il futuro di Propel</title>
		<link>http://www.symfony.it/articoli/190/irc-meeting-per-il-futuro-di-propel/</link>
		<comments>http://www.symfony.it/articoli/190/irc-meeting-per-il-futuro-di-propel/#comments</comments>
		<pubDate>Tue, 08 Sep 2009 10:12:36 +0000</pubDate>
		<dc:creator>fullo</dc:creator>
				<category><![CDATA[eventi]]></category>
		<category><![CDATA[propel]]></category>
		<category><![CDATA[irc]]></category>
		<category><![CDATA[meeting]]></category>
		<category><![CDATA[orm]]></category>

		<guid isPermaLink="false">http://www.symfony.it/?p=190</guid>
		<description><![CDATA[François Zaninotto e Sven Teitje, che hanno ufficialmente annunciato di aver preso in carico il progetto Propel con la mail qui di seguito, hanno indetto un IRC meeting per discutere del futuro dell&#8217;ORM. Se avete qualche idea interessante, e voglia di comunicarla, l&#8217;appuntamento è sul canale #propel di Freenode il 10 Settembre alle 20.00. Dear [...]]]></description>
			<content:encoded><![CDATA[<p>François Zaninotto e Sven Teitje, che hanno <a href="http://groups.google.com/group/propel-development/browse_thread/thread/a346a512e4219cdc?pli=1">ufficialmente annunciato</a> di aver preso in carico il progetto <a href="http://www.symfony.it/tags/propel">Propel</a> con la mail qui di seguito, hanno indetto un IRC meeting per discutere del futuro dell&#8217;ORM.</p>
<p>Se avete qualche idea interessante, e voglia di comunicarla, l&#8217;appuntamento è sul canale #propel di Freenode il 10 Settembre alle 20.00.</p>
<blockquote><p>Dear Propel devs / users,</p>
<p>Hans Lellelid, current lead of the Propel project, has agreed to leave the<br />
project keys to François Zaninotto (for the 1.x branch) and Sven Teitje (for<br />
the 2.x branch). Both François and Sven will do their best to help Propel<br />
get better and get more users.</p>
<p>And because you probably all have lots of ideas, an IRC meeting is planned<br />
on the #propel channel on freenode on Thursday, September 10th, at 8:00pm<br />
West European Time (that&#8217;s 2:00pm East Coast time). Please come there to<br />
explain your needs, offer your collaboration, discuss the project<br />
management, and meet the new project leaders. If you can&#8217;t make it for the<br />
IRC meeting, don&#8217;t hesitate to use the propel development mailing-list (</p>
<p>http://groups.google.com/group/propel-development).</p>
<p>François Zaninotto (francois) and Sven Teitje (tiddy) </p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.symfony.it/articoli/190/irc-meeting-per-il-futuro-di-propel/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Propel è morto. Evviva Propel.</title>
		<link>http://www.symfony.it/articoli/187/propel-e-morto-evviva-propel/</link>
		<comments>http://www.symfony.it/articoli/187/propel-e-morto-evviva-propel/#comments</comments>
		<pubDate>Thu, 03 Sep 2009 17:26:12 +0000</pubDate>
		<dc:creator>fullo</dc:creator>
				<category><![CDATA[propel]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[orm]]></category>
		<category><![CDATA[support]]></category>

		<guid isPermaLink="false">http://www.symfony.it/?p=187</guid>
		<description><![CDATA[Pare che il celeberrimo ORM non stia vivendo un bel periodo, infatti dopo una serie di messaggi su possibili problemi con PHP 5.3, Hans Lellelid (principale autore ed attuuale lead developer del progetto) ha ufficialmente annunciato che abbandonerà la sua creatura. Fortunatamente però pare che Francois Zaninotto, già famoso per il il lavoro fatto sulla [...]]]></description>
			<content:encoded><![CDATA[<p>Pare che il <a href="http://propel.phpdb.org/trac/">celeberrimo ORM</a> non stia vivendo un bel periodo, infatti dopo una serie di messaggi su possibili problemi con PHP 5.3, Hans Lellelid (principale autore ed attuuale lead developer del progetto) ha <a href="http://groups.google.com/group/propel-development/browse_thread/thread/60621ae4e539145d/829895b081ec7873#829895b081ec7873">ufficialmente annunciato che abbandonerà la sua creatura</a>.</p>
<p>Fortunatamente però pare che Francois Zaninotto, già famoso per il il lavoro fatto sulla prima versione di <a href="http://www.symfony.it/tag/symfony">symfony</a> e di molta della sua documentazione, e Sven Tietje prenderanno in mano il tutto. </p>
<p>Non si sa però come e con quali modalità continuerà lo sviluppo di questo ORM, per ora quindi non ci resta che aspettare.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.symfony.it/articoli/187/propel-e-morto-evviva-propel/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Usando symfony 1.2 e Doctrine 1.0 problemi con le equal nested relation</title>
		<link>http://www.symfony.it/articoli/149/usando-symfony-12-e-doctrine-10-problemi-con-le-equal-nested-relation/</link>
		<comments>http://www.symfony.it/articoli/149/usando-symfony-12-e-doctrine-10-problemi-con-le-equal-nested-relation/#comments</comments>
		<pubDate>Tue, 02 Jun 2009 20:55:13 +0000</pubDate>
		<dc:creator>filippo</dc:creator>
				<category><![CDATA[bugs]]></category>
		<category><![CDATA[doctrine]]></category>
		<category><![CDATA[hacks]]></category>
		<category><![CDATA[symfony]]></category>
		<category><![CDATA[patch]]></category>
		<category><![CDATA[plugins]]></category>
		<category><![CDATA[symfony1.2]]></category>

		<guid isPermaLink="false">http://www.symfony.it/?p=149</guid>
		<description><![CDATA[Non so se vi è mai capitato di avere a che fare con le cosiddette "equal nested relation". Queste relazioni tra oggetti sono quelle relazioni che possono essere tradotte (per quanto riguarda il database) con un "auto join" su una stessa tabella. Un esempio pratico lo potete trovare fra gli esempi del sito dell'ORM Doctrine [...]]]></description>
			<content:encoded><![CDATA[<p>Non so se vi è mai capitato di avere a che fare con le cosiddette "equal nested relation". Queste relazioni tra oggetti sono quelle relazioni che possono essere tradotte (per quanto riguarda il database) con un "auto join" su una stessa tabella.</p>
<p>Un esempio pratico lo potete trovare fra gli esempi del sito dell'ORM Doctrine : <a href="http://www.doctrine-project.org/documentation/manual/1_1/en/defining-models:relationships:join-table-associations:self-referencing-nest-relations:equal-nest-relations">Equal Nested Relation</a>.</p>
<p>In uno dei miei progetti (Symfony 1.2, Doctrine 1.0) ho dovuto usare un esempio analogo, ma invece che utenti collegati fra loro con una relazione molti a molti, dovevo collegare più ticket. Una volta messo tutto in piedi e creato le classi necessarie ho fatto qualche prova e mi è spuntato questo errore: </p>
<div class="igBar"><span id="lcode-2"><a href="#" onclick="javascript:showPlainTxt('code-2'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">CODE:</span>
<div id="code-2">
<div class="code">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#800000;color:#800000;">500</span> | Internal Server Error</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">Doctrine_Connection_Mysql_Exception SQLSTATE23000: Integrity constraint violation: <span style="color:#800000;color:#800000;">1062</span> Duplicate entry <span style="color:#CC0000;">'N-N'</span> for key <span style="color:#800000;color:#800000;">1</span> </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>Inizialmente ho cercato una soluzione che potesse dipendere dalle configurazioni del file schema.yml che usavo e poi soluzioni che potessero riguardare qualsiasi altra cosa. Dopo quasi due giorni a sbattere la testa su questo problema sono andato al PHPDay2009 a cui avrebbe partecipato anche <a href="http://www.jwage.com/">Jonathan Wage</a>, ovviamente ripromettendomi di chiedere direttamente a lui!!</p>
<p>Fortunatamente c'è stata occasione di parlargli e Jonathan è stato più che gentile tanto da aiutarmi e mettersi a provare a trovare una soluzione lì per lì per il mio problema. Dopo circa un'ora siamo arrivati a capire dov'era il problema. Poi a pezzi e bocconi siamo arrivati ad una soluzione nelle successive 24 ore!</p>
<p>La patch da utilizzare è scaricabile da <a href="http://www.php-collab.org/patch.diff">qui</a>. Ricondo che questa <strong>NON E' UNA SOLUZIONE DEFINITIVA</strong>. <strong>E' piuttosto un workaround al problema!!</strong> Un ticket relativo a questa soluzione è stato aperto <a href="http://trac.doctrine-project.org/ticket/2151">qui</a>.</p>
<p>Sembra che questo problema sia risolto utilizzando symfony 1.3 e doctrine 1.1, quindi aspettiamo con ansia la prossima uscita di symfony che include sfDoctinePlugin con doctrine 1.1!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.symfony.it/articoli/149/usando-symfony-12-e-doctrine-10-problemi-con-le-equal-nested-relation/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Symfony, Doctrine e validatori</title>
		<link>http://www.symfony.it/articoli/137/symfony-doctrine-e-validatori/</link>
		<comments>http://www.symfony.it/articoli/137/symfony-doctrine-e-validatori/#comments</comments>
		<pubDate>Thu, 16 Apr 2009 09:30:42 +0000</pubDate>
		<dc:creator>filippo</dc:creator>
				<category><![CDATA[doctrine]]></category>
		<category><![CDATA[programmazione]]></category>
		<category><![CDATA[symfony]]></category>

		<guid isPermaLink="false">http://www.symfony.it/?p=137</guid>
		<description><![CDATA[Ultimamente mi è capitato di lavorare con Doctrine all'interno di un progetto Symfony e di dover validare dei campi in input rispetto ad una classe del mio modello. Per particolari accorgimenti nella selezione degli input accettati mi sono trovato di fronte ad un problema che mi ha fatto perdere un pò di tempo e che [...]]]></description>
			<content:encoded><![CDATA[<p>Ultimamente mi è capitato di lavorare con Doctrine all'interno di un progetto Symfony e di dover validare dei campi in input rispetto ad una classe del mio modello. Per particolari accorgimenti nella selezione degli input accettati mi sono trovato di fronte ad un problema che mi ha fatto perdere un pò di tempo e che non sono riuscito a capire subito da cosa dipendesse. Lo segno qui per chi si trovasse nella mia stessa situazione.</p>
<p>Per la validazione degli input ho utilizzato <a title="sfValidatorDoctrineChoiceMany" href="http://www.symfony-project.org/api/1_2/sfValidatorDoctrineChoiceMany">sfValidatorDoctrineChoiceMany</a>, che già valida gli input rispetto ad una classe del modello</p>
<div class="igBar"><span id="lcode-8"><a href="#" onclick="javascript:showPlainTxt('code-8'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">CODE:</span>
<div id="code-8">
<div class="code">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">$this-&gt;<span style="">validatorSchema</span><span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#CC0000;">'users_list'</span><span style="color:#006600; font-weight:bold;">&#93;</span> = new sfValidatorDoctrineChoiceMany<span style="color:#006600; font-weight:bold;">&#40;</span>array<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#CC0000;">'model'</span> =&gt; <span style="color:#CC0000;">'User'</span><span style="color:#006600; font-weight:bold;">&#41;</span>; </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>La particolarità a cui mi sono trovato di fronte è quella in cui i valori accettati in input dovevano essere validati rispetto ad un sottoinsieme di quelli contenuti nel mio modello. Seguendo <a title="guida validatori symfony" href="http://www.symfony-project.org/forms/1_2/en/A-Widgets#chapter_a_sub_choice-bound-to-a-doctrine-model">la guida</a> trovata sul sito di symfony aggiungo il parametro 'query' al mio validatore.</p>
<div class="igBar"><span id="lcode-9"><a href="#" onclick="javascript:showPlainTxt('code-9'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">CODE:</span>
<div id="code-9">
<div class="code">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">$q = Doctrine_Query::<span style="">create</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">-&gt;<span style="">from</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#CC0000;">'User u'</span><span style="color:#006600; font-weight:bold;">&#41;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">-&gt;<span style="">where</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#CC0000;">'u.name = '</span>.$name<span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">...</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">$this-&gt;<span style="">validatorSchema</span><span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#CC0000;">'users_list'</span><span style="color:#006600; font-weight:bold;">&#93;</span> = new sfValidatorDoctrineChoiceMany<span style="color:#006600; font-weight:bold;">&#40;</span>array<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#CC0000;">'model'</span> =&gt; <span style="color:#CC0000;">'User'</span> ,<span style="color:#CC0000;">'query'</span> =&gt; $q<span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#41;</span>; </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>A questo punto però mi sono trovato di fronte all'errore</p>
<blockquote><p>500 | Internal Server Error | Doctrine_Exception</p>
<p>Couldn't find class a</p></blockquote>
<p>Non avendo nessuna classe (ne alias) 'a' definita nel modello mi sono girato un pò i log che vengono forniti da symfony e ho scoperto che sfValidatorDoctrineChoiceMany, durante il cleaning dei valori in input, esegue la query aggiungendo un'opzione al 'where':</p>
<p><em>sfValidatorDoctrineChoiceMany.class.php</em></p>
<div class="igBar"><span id="lcode-10"><a href="#" onclick="javascript:showPlainTxt('code-10'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">CODE:</span>
<div id="code-10">
<div class="code">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">...</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">$a = $this-&gt;<span style="">getOption</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#CC0000;">'alias'</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">$q = is_null<span style="color:#006600; font-weight:bold;">&#40;</span>$this-&gt;<span style="">getOption</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#CC0000;">'query'</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#41;</span> ? Doctrine_Query::<span style="">create</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span>-&gt;<span style="">from</span><span style="color:#006600; font-weight:bold;">&#40;</span>$this-&gt;<span style="">getOption</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#CC0000;">'model'</span><span style="color:#006600; font-weight:bold;">&#41;</span> . <span style="color:#CC0000;">' '</span> . $a<span style="color:#006600; font-weight:bold;">&#41;</span> : $this-&gt;<span style="">getOption</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#CC0000;">'query'</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">$q = $q-&gt;<span style="">andWhereIn</span><span style="color:#006600; font-weight:bold;">&#40;</span>$a . <span style="color:#CC0000;">'.'</span> . $this-&gt;<span style="">getColumn</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span>, $values<span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">$objects = $q-&gt;<span style="">execute</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">... </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>Queto comportamento è giusto per il classico meccanismo di doctrine di inserire un alias quando si esegue una query del tipo</p>
<div class="igBar"><span id="lcode-11"><a href="#" onclick="javascript:showPlainTxt('code-11'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">CODE:</span>
<div id="code-11">
<div class="code">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">$this-&gt;<span style="">status_list</span> = Doctrine::<span style="">getTable</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#CC0000;">'User'</span><span style="color:#006600; font-weight:bold;">&#41;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; -&gt;<span style="">createQuery</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#CC0000;">'a'</span><span style="color:#006600; font-weight:bold;">&#41;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; -&gt;<span style="">execute</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span>; </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>ma non lo è quando si genera una query leggermente più complessa.</p>
<p>La soluzione di questo problema è molto semplice ma non così banale, almeno dal mio punto di vista. Basta infatti aggiungere al validatore l'opzione 'alias'</p>
<div class="igBar"><span id="lcode-12"><a href="#" onclick="javascript:showPlainTxt('code-12'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">CODE:</span>
<div id="code-12">
<div class="code">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">$this-&gt;<span style="">validatorSchema</span><span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#CC0000;">'users_list'</span><span style="color:#006600; font-weight:bold;">&#93;</span> = new sfValidatorDoctrineChoiceMany<span style="color:#006600; font-weight:bold;">&#40;</span>array<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#CC0000;">'model'</span> =&gt; <span style="color:#CC0000;">'User'</span>, <span style="color:#CC0000;">'alias'</span> =&gt; <span style="color:#CC0000;">''</span> ,<span style="color:#CC0000;">'query'</span> =&gt; $q<span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#41;</span>; </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>Spero che questo appunto possa darvi una mano se mai vi troverete di fronte alla mia stessa situazione.</p>
<p>Buono "sviluppo" a tutti!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.symfony.it/articoli/137/symfony-doctrine-e-validatori/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>
<!-- WP Super Cache is installed but broken. The path to wp-cache-phase1.php in wp-content/advanced-cache.php must be fixed! -->