<?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>propel | Nerdpress.org</title>
	<atom:link href="https://nerdpress.org/tag/propel/feed/" rel="self" type="application/rss+xml" />
	<link>https://nerdpress.org</link>
	<description>...dev, tech problems and solutions.</description>
	<lastBuildDate>Wed, 11 Nov 2009 17:24:46 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>
	<item>
		<title>symfony und multiple inserts</title>
		<link>https://nerdpress.org/2009/11/11/symfony-und-multiple-inserts/</link>
		
		<dc:creator><![CDATA[Ivo Bathke]]></dc:creator>
		<pubDate>Wed, 11 Nov 2009 17:24:46 +0000</pubDate>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[propel]]></category>
		<category><![CDATA[Sqlite]]></category>
		<category><![CDATA[Symfony]]></category>
		<guid isPermaLink="false">https://nerdpress.org/?p=559</guid>

					<description><![CDATA[<p>Manchmal sollte man multiple Inserts machen, ist doch performanter als in jedem Schleifendurchlauf die Database Engine zu bemühen. Falls man sich mal fragt wie man multiple Inserts mit symfony hinkriegt, fängt man an zu googlen und stößt schnell auf dieses Snippet. Und bevor man da rumeiert und das auf zB Sqlite umschreibt, einfach mal Propel &#8230; </p>
<p class="link-more"><a href="https://nerdpress.org/2009/11/11/symfony-und-multiple-inserts/" class="more-link">Continue reading<span class="screen-reader-text"> "symfony und multiple inserts"</span></a></p>
The post <a href="https://nerdpress.org/2009/11/11/symfony-und-multiple-inserts/">symfony und multiple inserts</a> first appeared on <a href="https://nerdpress.org">Nerdpress.org</a>.]]></description>
										<content:encoded><![CDATA[<p>Manchmal sollte man multiple Inserts machen, ist doch performanter als in jedem Schleifendurchlauf die Database Engine zu bemühen.</p>
<p>Falls man sich mal fragt wie man multiple Inserts mit symfony hinkriegt, fängt man an zu googlen und stößt schnell auf dieses <a href="http://snippets.symfony-project.org/snippet/307" target="_blank">Snippet</a>.</p>
<p>Und bevor man da rumeiert und das auf zB Sqlite umschreibt, einfach mal<a href="http://propel.phpdb.org/trac/wiki/Users/Documentation/1.3/HowTos/Transactions" target="_blank"> Propel Transaktionen</a> anschauen:</p>
<p><span id="more-559"></span></p>
<pre class="brush: php; title: ; notranslate">

$con = Propel::getConnection();
$con-&gt;beginTransaction();

foreach ($temp as $item) {

$blog = new Blogs();
$blog-&gt;setTitle($title);

$blog-&gt;save($con);

}

$con-&gt;commit();

</pre>
<p>Klappt super, zumindest mit Sqlite bei mir hier.</p>The post <a href="https://nerdpress.org/2009/11/11/symfony-und-multiple-inserts/">symfony und multiple inserts</a> first appeared on <a href="https://nerdpress.org">Nerdpress.org</a>.]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>symfony 1.2. Admin Generator mit Datepicker</title>
		<link>https://nerdpress.org/2009/11/01/symfony-1-2-admin-generator-mit-datepicker/</link>
					<comments>https://nerdpress.org/2009/11/01/symfony-1-2-admin-generator-mit-datepicker/#comments</comments>
		
		<dc:creator><![CDATA[Ivo Bathke]]></dc:creator>
		<pubDate>Sun, 01 Nov 2009 15:17:05 +0000</pubDate>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Datepicker]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[plugins]]></category>
		<category><![CDATA[propel]]></category>
		<category><![CDATA[Symfony]]></category>
		<guid isPermaLink="false">https://nerdpress.org/?p=500</guid>

					<description><![CDATA[<p>Eigentlich hatte ich gedacht, dass das irgendwie einfacher gehen würde, aber hat mich dann doch einiges an Recherche gekostet. Nachdem ich irgendwann mal das &#8220;My First Project&#8221; durchgespielt hatte, war ich der Auffasung, dass der Datepicker immer benutzt wird beim Admin Generator. Doch nachdem ich dann mal eine andere Anleitung benutzt hatte mußte ich feststellen: &#8230; </p>
<p class="link-more"><a href="https://nerdpress.org/2009/11/01/symfony-1-2-admin-generator-mit-datepicker/" class="more-link">Continue reading<span class="screen-reader-text"> "symfony 1.2. Admin Generator mit Datepicker"</span></a></p>
The post <a href="https://nerdpress.org/2009/11/01/symfony-1-2-admin-generator-mit-datepicker/">symfony 1.2. Admin Generator mit Datepicker</a> first appeared on <a href="https://nerdpress.org">Nerdpress.org</a>.]]></description>
										<content:encoded><![CDATA[<p>Eigentlich hatte ich gedacht, dass das irgendwie einfacher gehen würde, aber hat mich dann doch einiges an Recherche gekostet.</p>
<p>Nachdem ich irgendwann mal das &#8220;<a href="http://www.symfony-project.org/tutorial/1_2/en/my-first-project" target="_blank">My First Project</a>&#8221; durchgespielt hatte, war ich der Auffasung, dass der Datepicker immer benutzt wird beim Admin Generator. Doch nachdem ich dann mal eine andere <a href="http://www.symfony-project.org/book/1_2/14-Generators" target="_blank">Anleitung</a> benutzt hatte mußte ich feststellen: Das ist nicht immer so!</p>
<p>Den Unterschied macht, wie man den Admin Generator aufruft:</p>
<pre class="brush: bash; title: ; notranslate">php symfony propel:init-admin backend post BlogPost</pre>
<p>ist symfony 1.0 und macht den DatePicker</p>
<pre class="brush: bash; title: ; notranslate">php symfony propel:generate-admin backend BlogComment --module=comment</pre>
<p>ist symfony 1.2 und generiert stattdessen ein <span style="text-decoration: line-through;">häßliches</span> pulldown.</p>
<p>Um nun für 1.2. doch einen DatePicker zu bekommen nützt es auch nix irgendwas in der generator.yml anzugeben. Das wird alles ignoriert.</p>
<p><span id="more-500"></span>Man muss schon ein PlugIn bemühen: das <a href="http://www.symfony-project.org/plugins/sfFormExtraPlugin">sfFormExtraPlugin</a>.</p>
<p>Das baut dann ein Jquery Datepicker hinter das Pulldown, auch nich so dolle aber immerhin.</p>
<p>Und das läuft so:</p>
<p>&#8211; Plugin installieren</p>
<p>&#8211; Jquery holen und einbinden in die view.yml:</p>
<pre class="brush: bash; title: ; notranslate">

javascripts:    &#x5B;jquery-1.3.2.min.js,query-ui-1.7.2.custom.min.js]

stylesheets:    &#x5B;main.css,jquery-ui-1.7.2.custom.css]

</pre>
<p>&#8211; jquery-ui-1.7.2.custom.min.js nach web/js kopieren<br />
&#8211; jquery-ui-1.7.2.custom.css nach web/css kopieren</p>
<p>&#8211; in lib/form/&lt;model&gt;Form.class.php folgendes rein:</p>
<pre class="brush: php; title: ; notranslate">

public function setup()
{
parent::setup();
$this-&amp;gt;widgetSchema&#x5B;&#039;created_at&#039;] = new sfWidgetFormJQueryDate();
}

</pre>
<p>&#8211; cache leeren noch mal den admin generator anschmeißen und wenn ich nix vergessen hab, sollte jetzt der DatePicker auftauchen</p>
<p>Puh, danke an die symfony Forum Suche ich hoffe in 1.3. wird das ein bißchen einfacher.</p>
<p>Habt Ihr das auch so gemacht? Gibts noch ein Trick?</p>
<p>Lasst mich es wissen&#8230;</p>The post <a href="https://nerdpress.org/2009/11/01/symfony-1-2-admin-generator-mit-datepicker/">symfony 1.2. Admin Generator mit Datepicker</a> first appeared on <a href="https://nerdpress.org">Nerdpress.org</a>.]]></content:encoded>
					
					<wfw:commentRss>https://nerdpress.org/2009/11/01/symfony-1-2-admin-generator-mit-datepicker/feed/</wfw:commentRss>
			<slash:comments>4</slash:comments>
		
		
			</item>
		<item>
		<title>sfAMFPlugin &#038; Propel Custom Properties</title>
		<link>https://nerdpress.org/2009/09/10/sfamfplugin-and-custom-properties/</link>
					<comments>https://nerdpress.org/2009/09/10/sfamfplugin-and-custom-properties/#comments</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Thu, 10 Sep 2009 15:47:39 +0000</pubDate>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Symfony]]></category>
		<category><![CDATA[Amf]]></category>
		<category><![CDATA[Custom Property]]></category>
		<category><![CDATA[propel]]></category>
		<category><![CDATA[sfAmfPlugin]]></category>
		<guid isPermaLink="false">https://nerdpress.org/?p=211</guid>

					<description><![CDATA[<p>Das SfAmfPlugin ist ein Symfony-Plugin, welches auf SabreAMF aufsetzt, einer PHP-Bibliothek, die &#8211;  yessir! &#8211; zur Kommunikation mit einem Flash/Flex Remote Client via AMF-Protokoll konzipiert wurde. Nun bietet SabreAMF ab Werk &#8220;nur&#8221; Serialisierungen für primitive Typen sowie Bytestreams (Flash-Pendant &#8220;ByteArray&#8221;) und PHP-Array (&#8220;ArrayCollection&#8221;) an. Natürlich kann man auch Objekte per Class-Mapping auf ein Äquivalent im Flash-Player abbilden. Das Symfony-Plugin &#8230; </p>
<p class="link-more"><a href="https://nerdpress.org/2009/09/10/sfamfplugin-and-custom-properties/" class="more-link">Continue reading<span class="screen-reader-text"> "sfAMFPlugin &#038; Propel Custom Properties"</span></a></p>
The post <a href="https://nerdpress.org/2009/09/10/sfamfplugin-and-custom-properties/">sfAMFPlugin & Propel Custom Properties</a> first appeared on <a href="https://nerdpress.org">Nerdpress.org</a>.]]></description>
										<content:encoded><![CDATA[<p>Das <a href="http://www.symfony-project.org/plugins/sfAmfPlugin">SfAmfPlugin</a> ist ein Symfony-Plugin, welches auf <a href="http://osflash.org/sabreamf">SabreAMF</a> aufsetzt, einer PHP-Bibliothek, die &#8211;  yessir! &#8211; zur Kommunikation mit einem Flash/Flex Remote Client via <a href="http://en.wikipedia.org/wiki/Action_Message_Format">AMF-Protokol</a>l konzipiert wurde.</p>
<p>Nun bietet SabreAMF ab Werk &#8220;nur&#8221; Serialisierungen für primitive Typen sowie Bytestreams (Flash-Pendant &#8220;ByteArray&#8221;) und PHP-Array (&#8220;ArrayCollection&#8221;) an. Natürlich kann man auch Objekte per Class-Mapping auf ein Äquivalent im Flash-Player abbilden.<span id="more-211"></span></p>
<p>Das Symfony-Plugin setzt noch einen drauf und bietet mehrere Adapterklassen, die es ermöglichen, ohne Aufwand Propel-Persistenzobjekte sowie Instanzen von DoctrineCollection und einzelnen Doctrine-Models zu serialisieren.</p>
<p>Im Falle Propel geschieht das Mapping via <a href="http://nz.php.net/oop5.reflection">Reflection</a>-API, durch die festgestellt wird, ob die übergebene Instanz von X das Interface &#8220;Persistent&#8221; implementiert. Reflection? Klingt unheimlich ausgefuchst. Dumm nur, dass ihr Einsatz damit auch schon beendet ist. Denn sobald die Instanz als ich sag&#8217; mal Plain Old Propel Object (&#8220;Popel&#8221; :D) identifiziert wurde, greift sich das Plugin durch die toArray()-Methode die gespeicherten Eigenschaften.</p>
<p>Wobei natürlich nur diejenigen auch korrekt serialisiert werden, die zu diesem  Zeitpunkt bereits geladen wurden. Und custom-properties erst gar nicht berücksichtigt werden. Und Fk-Beziehungen erst recht nicht.</p>
<p>Die Lösung gegen frühzeitige Nervenzusammenbrüche (einen AMF-Service zu debuggen ist ja auch so eine Sache) ist natürlich &#8211; wenn man es weiß &#8211; : Die toArray() Methode einfach überschreiben bzw. erweitern um die Objekteigenschaften, die man via AMF mitschicken möchte. (Bitte mögliche Seiteneffekte im Sourcecode vorher gründlich abklopfen! Ich übernehme keine Haftung bei spontaner Selbstentzündung!)</p>
<p>Schade, dass sfAmfPlugin so derbst schlecht dokumentiert ist und gerade über die Serialisierung wenig bis gar keine Worte verloren werden. Ansonsten ist das Teil ja wirklich nett.</p>The post <a href="https://nerdpress.org/2009/09/10/sfamfplugin-and-custom-properties/">sfAMFPlugin & Propel Custom Properties</a> first appeared on <a href="https://nerdpress.org">Nerdpress.org</a>.]]></content:encoded>
					
					<wfw:commentRss>https://nerdpress.org/2009/09/10/sfamfplugin-and-custom-properties/feed/</wfw:commentRss>
			<slash:comments>3</slash:comments>
		
		
			</item>
		<item>
		<title>Symfony, Propel und SQL Aggregate Functions</title>
		<link>https://nerdpress.org/2009/09/08/symfony-propel-und-sql-aggregate-functions/</link>
					<comments>https://nerdpress.org/2009/09/08/symfony-propel-und-sql-aggregate-functions/#comments</comments>
		
		<dc:creator><![CDATA[Ivo Bathke]]></dc:creator>
		<pubDate>Tue, 08 Sep 2009 14:57:22 +0000</pubDate>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Symfony]]></category>
		<category><![CDATA[propel]]></category>
		<guid isPermaLink="false">https://nerdpress.org/?p=148</guid>

					<description><![CDATA[<p>Da ich jetzt fast zwei Stunden gebraucht habe um einen GROUP BY und COUNT query in Symfony hinzukriegen, hier mal die Erklärung dazu. Bei Google hab ich auch nichts sonderlich hilfreiches gefunden, bis auf einen Beitrag: hier &#8230; und da die letzte Antwort. Will man also einen Query wie folgt mit Propel bauen: SELECT referer.ID, &#8230; </p>
<p class="link-more"><a href="https://nerdpress.org/2009/09/08/symfony-propel-und-sql-aggregate-functions/" class="more-link">Continue reading<span class="screen-reader-text"> "Symfony, Propel und SQL Aggregate Functions"</span></a></p>
The post <a href="https://nerdpress.org/2009/09/08/symfony-propel-und-sql-aggregate-functions/">Symfony, Propel und SQL Aggregate Functions</a> first appeared on <a href="https://nerdpress.org">Nerdpress.org</a>.]]></description>
										<content:encoded><![CDATA[<p>Da ich jetzt fast zwei Stunden gebraucht habe um einen GROUP BY und COUNT query in Symfony hinzukriegen, hier mal die Erklärung dazu.</p>
<p>Bei Google hab ich auch nichts sonderlich hilfreiches gefunden, bis auf einen Beitrag:<br />
<a href="http://stackoverflow.com/questions/246400/symfony-app-how-to-add-calculated-fields-to-propel-objects">hier</a> &#8230; und da die letzte Antwort.</p>
<p>Will man also einen Query wie folgt mit Propel bauen:</p>
<pre class="brush: sql; title: ; notranslate">

SELECT referer.ID, referer.IP, referer.CREATED_AT, count(*) AS cnt

FROM `referer`

WHERE referer.CREATED_AT &gt;&#039;2009-07-22 00:00:00&#039;

GROUP BY referer.URL

ORDER BY referer.CREATED_AT ASC LIMIT 25

</pre>
<p>macht man so:</p>
<p><span id="more-148"></span></p>
<pre class="brush: php; title: ; notranslate">
$c = new Criteria();
$c-&gt;addAsColumn(&#039;cnt&#039;, &quot;count(*)&quot;);
RefererPeer::addSelectColumns($c);
$c-&gt;add(RefererPeer::CREATED_AT,date(&#039;Y-m-d&#039;).&#039; 00:00:00&#039;,Criteria::GREATER_THAN);
$c-&gt;addAscendingOrderByColumn(RefererPeer::CREATED_AT);
$c-&gt;addGroupByColumn(RefererPeer::URL);
$c-&gt;setLimit(sfConfig::get(&#039;max_refererdashboard&#039;,25));
$called = RefererPeer::doSelect($c);
</pre>
<p>Die Objekte im Ergebnis Array enthalten nun aber <strong>nicht</strong> die neue Column &#8216;<span style="font-style: italic;">cnt</span>&#8216;.<br />
Die muss man dem Model noch beibringen.</p>
<p>Um das Model Objekt zu erstellen benutzt Symfony eine hydrate() Funktion aus der Base Klasse.<br />
Die muss im Model überschrieben werden und darin die neue Column <span style="font-style: italic;">cnt</span> in das Ergebnis Objekt aufgenommen werden.</p>
<p>ungefähr so:</p>
<pre class="brush: php; title: ; notranslate">
class Referer extends BaseReferer
{
public function hydrate($row, $startcol = 0, $rehydrate = false)
{
$r = parent::hydrate($row, $startcol, $rehydrate);
$this-&gt;cnt = $row&#x5B;7];
return $r;
}
}
</pre>
<p>Dann gehts!</p>The post <a href="https://nerdpress.org/2009/09/08/symfony-propel-und-sql-aggregate-functions/">Symfony, Propel und SQL Aggregate Functions</a> first appeared on <a href="https://nerdpress.org">Nerdpress.org</a>.]]></content:encoded>
					
					<wfw:commentRss>https://nerdpress.org/2009/09/08/symfony-propel-und-sql-aggregate-functions/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
	</channel>
</rss>
