<?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; doctrine</title>
	<atom:link href="http://www.symfony.it/categoria/orm/doctrine/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.symfony.it</link>
	<description>Just another Symfony Framework weblog</description>
	<lastBuildDate>Mon, 30 Jan 2012 13:53:22 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
	<div id='fb-root'></div>
					<script type='text/javascript'>
						window.fbAsyncInit = function()
						{
							FB.init({appId: null, status: true, cookie: true, xfbml: true});
						};
						(function()
						{
							var e = document.createElement('script'); e.async = true;
							e.src = document.location.protocol + '//connect.facebook.net/it_IT/all.js';
							document.getElementById('fb-root').appendChild(e);
						}());
					</script>	
						<item>
		<title>Utilizzare le Estensioni di Doctrine in progetti symfony2</title>
		<link>http://www.symfony.it/articoli/555/symfony2-doctrine-extensions/</link>
		<comments>http://www.symfony.it/articoli/555/symfony2-doctrine-extensions/#comments</comments>
		<pubDate>Thu, 24 Nov 2011 08:30:08 +0000</pubDate>
		<dc:creator>Francesco Tassi</dc:creator>
				<category><![CDATA[bundle]]></category>
		<category><![CDATA[doctrine]]></category>
		<category><![CDATA[documentazione]]></category>
		<category><![CDATA[orm]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[symfony]]></category>
		<category><![CDATA[symfony2]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://www.symfony.it/?p=555</guid>
		<description><![CDATA[Doctrine prevede un set di eventi che permettono di modificarne ed estenderne il comportamento. Tramite l&#8217;utilizzo di questi eventi è possibile implementare nuove funzionalità non previste dall&#8217; ORM. Sfruttando questa potenzialità è stato creato un set di estensioni per mettere a disposizione degli sviluppatori alcuni comportamenti di uso comune. L&#8217;integrazione all&#8217;interno di symfony2 è facilitata [...]]]></description>
			<content:encoded><![CDATA[<p>Doctrine prevede un set di <strong>eventi</strong> che permettono di modificarne ed <strong>estenderne il comportamento</strong>. Tramite l&#8217;utilizzo di questi eventi è possibile <strong>implementare nuove funzionalità</strong> non previste dall&#8217; ORM. Sfruttando questa potenzialità è stato creato un <a title="DoctrineExtensions" href="https://github.com/l3pp4rd/DoctrineExtensions">set di estensioni</a> per mettere a disposizione degli sviluppatori alcuni <strong>comportamenti di uso comune</strong>. L&#8217;integrazione all&#8217;interno di symfony2 è facilitata dal bundle <strong><a title="DoctrineExtensionsBundle" href="https://github.com/stof/StofDoctrineExtensionsBundle">StofDoctrineExtensionsBundle</a></strong>.</p>
<p><span id="more-555"></span></p>
<p>Il <a title="DoctrineExtensions" href="https://github.com/l3pp4rd/DoctrineExtensions">repository DoctrineExtensions</a> prevede queste estensioni:</p>
<ul>
<li>Translatable</li>
<li>Sluggable</li>
<li>Timestampable</li>
<li>Loggable</li>
<li>Tree</li>
<li>Sortable</li>
</ul>
<p>I nomi sono piuttosto indicativi riguardo allo scopo di ognuna. Chi viene da symfony 1.x e doctrine 1.x ricorderà certamente una serie di plugin *ActAs* che avevano esattamente lo stesso scopo di queste estensioni.</p>
<p>Come detto, per utilizzare questi comportamenti in progetti symfony2, è possibile usufruire del bundle<strong> <a title="DoctrineExtensionsBundle" href="https://github.com/stof/StofDoctrineExtensionsBundle">StofDoctrineExtensionsBundle</a> </strong>che mette a disposizione listener e configurazioni varie per semplificare l&#8217;integrazione all&#8217;interno del progetto.</p>
<p><del>In questo momento il bundle non sembra gestire l&#8217;estensione Sortable ma non ho ancora verificato se si tratta di una carenza di documentazione o di una reale mancanza nell&#8217;implementazione dell&#8217;estensione.</del></p>
<p>Nei prossimi post spiegherò come configurare e utilizzare correttamente ognuna delle estensioni disponibili con il bundle.</p>
<div class='wpfblike' style='height: 40px;'><fb:like href='http://www.symfony.it/articoli/555/symfony2-doctrine-extensions/' layout='default' show_faces='true' width='400' action='like' colorscheme='light' send='false' /></div>]]></content:encoded>
			<wfw:commentRss>http://www.symfony.it/articoli/555/symfony2-doctrine-extensions/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Rilasciato Doctrine 2.0</title>
		<link>http://www.symfony.it/articoli/395/rilasciato-doctrine-2-0/</link>
		<comments>http://www.symfony.it/articoli/395/rilasciato-doctrine-2-0/#comments</comments>
		<pubDate>Wed, 22 Dec 2010 07:55:40 +0000</pubDate>
		<dc:creator>Massimiliano Arione</dc:creator>
				<category><![CDATA[doctrine]]></category>
		<category><![CDATA[orm]]></category>

		<guid isPermaLink="false">http://www.symfony.it/?p=395</guid>
		<description><![CDATA[Con un post sul blog di Doctrine, è stato annunciato il primo rilascio stabile del ramo 2, che sarà l&#8217;ORM predefinito di Symfony2. Come sottolineato nello stesso post, questa versione non è retro-compatibile col precedente ramo 1.]]></description>
			<content:encoded><![CDATA[<p>Con un <a href="http://www.doctrine-project.org/blog/doctrine2-released">post sul blog di Doctrine</a>, è stato annunciato il primo rilascio stabile del ramo 2, che sarà l&#8217;ORM predefinito di Symfony2. Come sottolineato nello stesso post, questa versione non è retro-compatibile col precedente ramo 1.</p>
<div class='wpfblike' style='height: 40px;'><fb:like href='http://www.symfony.it/articoli/395/rilasciato-doctrine-2-0/' layout='default' show_faces='true' width='400' action='like' colorscheme='light' send='false' /></div>]]></content:encoded>
			<wfw:commentRss>http://www.symfony.it/articoli/395/rilasciato-doctrine-2-0/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Un anno senza ORM?</title>
		<link>http://www.symfony.it/articoli/370/un-anno-senza-orm/</link>
		<comments>http://www.symfony.it/articoli/370/un-anno-senza-orm/#comments</comments>
		<pubDate>Tue, 02 Nov 2010 15:02:44 +0000</pubDate>
		<dc:creator>fullo</dc:creator>
				<category><![CDATA[doctrine]]></category>
		<category><![CDATA[orm]]></category>
		<category><![CDATA[propel]]></category>
		<category><![CDATA[doctrine 1.x]]></category>
		<category><![CDATA[support]]></category>
		<category><![CDATA[symfony]]></category>

		<guid isPermaLink="false">http://www.symfony.it/?p=370</guid>
		<description><![CDATA[G9NGBH9YK85S Se seguite questa discussione sul gruppo di Symfony su Linkedin avrete notato che è emersa una notizia abbastanza interessante. The Doctrine 1.2 support seems to be extended to June, 1st 2011. But this post was written 11 months ago and I think the end of support was shortened&#8230; Che affiancata al fatto che il [...]]]></description>
			<content:encoded><![CDATA[<p><span style="color:#ffffff">G9NGBH9YK85S</span><br />
Se seguite <a href="http://www.linkedin.com/groupItem?view=&#038;gid=29205&#038;type=member&#038;item=33766156&#038;qid=f05764e2-b7ea-47d9-b095-138af05854a0&#038;goback=.gde_29205_member_33766156.gmp_29205">questa discussione sul gruppo di Symfony</a> su Linkedin avrete notato che è emersa una notizia abbastanza interessante.</p>
<blockquote><p>The <a href="http://www.doctrine-project.org/blog/doctrine-1-2-0-stable-released">Doctrine 1.2 support seems to be extended to June, 1st 2011</a>. But this post was written 11 months ago and I think the end of support was shortened&#8230; </p></blockquote>
<p>Che affiancata al fatto che il supporto ufficiale a Symfony 1.x finirà il 31 dicembre 2012, fa evidenziare come per circa 1 anno e mezzo nessun ORM sarà ufficialmente supportato dal framework. </p>
<p>Che sia arrivato il tempo, per i progetti basati su symfony 1.x, di dare di nuovo un occhio a <a href="http://www.symfony.it/categoria/orm/propel/">Propel</a>?</p>
<div class='wpfblike' style='height: 40px;'><fb:like href='http://www.symfony.it/articoli/370/un-anno-senza-orm/' layout='default' show_faces='true' width='400' action='like' colorscheme='light' send='false' /></div>]]></content:encoded>
			<wfw:commentRss>http://www.symfony.it/articoli/370/un-anno-senza-orm/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<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>Massimiliano Arione</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>
<div class='wpfblike' style='height: 40px;'><fb:like href='http://www.symfony.it/articoli/301/test-complessi-con-sftesterdoctrine/' layout='default' show_faces='true' width='400' action='like' colorscheme='light' send='false' /></div>]]></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>&#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[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>
<div class='wpfblike' style='height: 40px;'><fb:like href='http://www.symfony.it/articoli/231/di-piu-con-symfony-su-amazon-come-presente-per-lanno-nuovo/' layout='default' show_faces='true' width='400' action='like' colorscheme='light' send='false' /></div>]]></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>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 &#8220;equal nested relation&#8221;. Queste relazioni tra oggetti sono quelle relazioni che possono essere tradotte (per quanto riguarda il database) con un &#8220;auto join&#8221; su una stessa tabella. Un esempio pratico lo potete trovare fra gli esempi del sito dell&#8217;ORM Doctrine [...]]]></description>
			<content:encoded><![CDATA[<p>Non so se vi è mai capitato di avere a che fare con le cosiddette &#8220;equal nested relation&#8221;. Queste relazioni tra oggetti sono quelle relazioni che possono essere tradotte (per quanto riguarda il database) con un &#8220;auto join&#8221; su una stessa tabella.</p>
<p>Un esempio pratico lo potete trovare fra gli esempi del sito dell&#8217;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>
<pre>
500 | Internal Server Error
Doctrine_Connection_Mysql_Exception SQLSTATE23000: Integrity constraint violation: 1062 Duplicate entry 'N-N' for key 1
</pre>
<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&#8217;è 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&#8217;ora siamo arrivati a capire dov&#8217;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>. Ricordo che questa <strong>NON È UNA SOLUZIONE DEFINITIVA</strong>. <strong>E&#8217; 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>
<div class='wpfblike' style='height: 40px;'><fb:like href='http://www.symfony.it/articoli/149/usando-symfony-12-e-doctrine-10-problemi-con-le-equal-nested-relation/' layout='default' show_faces='true' width='400' action='like' colorscheme='light' send='false' /></div>]]></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>3</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&#8217;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 po&#8217; di tempo e che [...]]]></description>
			<content:encoded><![CDATA[<p>Ultimamente mi è capitato di lavorare con Doctrine all&#8217;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 po&#8217; 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>
<p><code>$this->validatorSchema['users_list'] = new sfValidatorDoctrineChoiceMany(array('model' => 'User');</code></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 &#8216;query&#8217; al mio validatore.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$q</span> <span style="color: #339933;">=</span> Doctrine_Query<span style="color: #339933;">::</span><span style="color: #004000;">create</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
<span style="color: #339933;">-&gt;</span><span style="color: #004000;">from</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'User u'</span><span style="color: #009900;">&#41;</span>
<span style="color: #339933;">-&gt;</span><span style="color: #004000;">where</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'u.name = '</span><span style="color: #339933;">.</span><span style="color: #000088;">$name</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #339933;">...</span>
&nbsp;
<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">validatorSchema</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'users_list'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> sfValidatorDoctrineChoiceMany<span style="color: #009900;">&#40;</span><span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'model'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'User'</span> <span style="color: #339933;">,</span><span style="color: #0000ff;">'query'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000088;">$q</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>A questo punto però mi sono trovato di fronte all&#8217;errore</p>
<p><code>500 | Internal Server Error | Doctrine_Exception</p>
<p>Couldn't find class a</code></p>
<p>Non avendo nessuna classe (né alias) &#8216;a&#8217; definita nel modello mi sono girato un po&#8217; i log che vengono forniti da symfony e ho scoperto che sfValidatorDoctrineChoiceMany, durante il cleaning dei valori in input, esegue la query aggiungendo un&#8217;opzione al &#8216;where&#8217;:</p>
<p><em>sfValidatorDoctrineChoiceMany.class.php</em></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #339933;">...</span>
<span style="color: #000088;">$a</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getOption</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'alias'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$q</span> <span style="color: #339933;">=</span> <span style="color: #990000;">is_null</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getOption</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'query'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> ? Doctrine_Query<span style="color: #339933;">::</span><span style="color: #004000;">create</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">from</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getOption</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'model'</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">' '</span> <span style="color: #339933;">.</span> <span style="color: #000088;">$a</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">:</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getOption</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'query'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000088;">$q</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$q</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">andWhereIn</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$a</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">'.'</span> <span style="color: #339933;">.</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getColumn</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$values</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000088;">$objects</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$q</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">execute</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #339933;">...</span></pre></td></tr></table></div>

<p>Questo comportamento è giusto per il classico meccanismo di Doctrine di inserire un alias quando si esegue una query del tipo</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">status_list</span> <span style="color: #339933;">=</span> Doctrine<span style="color: #339933;">::</span><span style="color: #004000;">getTable</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'User'</span><span style="color: #009900;">&#41;</span>
    <span style="color: #339933;">-&gt;</span><span style="color: #004000;">createQuery</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'a'</span><span style="color: #009900;">&#41;</span>
    <span style="color: #339933;">-&gt;</span><span style="color: #004000;">execute</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<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&#8217;opzione &#8216;alias&#8217;</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">validatorSchema</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'users_list'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> sfValidatorDoctrineChoiceMany<span style="color: #009900;">&#40;</span><span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'model'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'User'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'alias'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">''</span> <span style="color: #339933;">,</span><span style="color: #0000ff;">'query'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000088;">$q</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>Spero che questo appunto possa darvi una mano se mai vi troverete di fronte alla mia stessa situazione.</p>
<p>Buono &#8220;sviluppo&#8221; a tutti!</p>
<div class='wpfblike' style='height: 40px;'><fb:like href='http://www.symfony.it/articoli/137/symfony-doctrine-e-validatori/' layout='default' show_faces='true' width='400' action='like' colorscheme='light' send='false' /></div>]]></content:encoded>
			<wfw:commentRss>http://www.symfony.it/articoli/137/symfony-doctrine-e-validatori/feed/</wfw:commentRss>
		<slash:comments>4</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! -->
