<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	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/"
		>
<channel>
	<title>Comentarios en: Se publica la primera beta de Symfony 1.2</title>
	<atom:link href="http://www.symfony.es/2008/11/04/se-publica-la-primera-beta-de-symfony-12/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.symfony.es/2008/11/04/se-publica-la-primera-beta-de-symfony-12/</link>
	<description>Hablamos sobre Symfony, el mejor framework para desarrollar aplicaciones web con PHP</description>
	<lastBuildDate>Tue, 07 Feb 2012 09:36:53 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
	<item>
		<title>Por: Ernesto Sarduy</title>
		<link>http://www.symfony.es/2008/11/04/se-publica-la-primera-beta-de-symfony-12/comment-page-1/#comment-25448</link>
		<dc:creator>Ernesto Sarduy</dc:creator>
		<pubDate>Mon, 22 Jun 2009 14:02:48 +0000</pubDate>
		<guid isPermaLink="false">http://www.symfony.es/?p=487#comment-25448</guid>
		<description>En mi proyecto necesitaba crear dinámicamente algunas tablas  en la BD, usamos symfony 1.1.7, y como ORM  PROPEL. Investigando en el código de PROPEL y en INTERNET, me dí cuenta que no había forma de generar  el modelo (Clases Persistentes) de una porción de la BD, en este caso de las tablas que generaba dinámicamente. 
 
Por ello decidí programar algo sencillo que me permitiese hacerlo. Aquí les dejo una pequeña guía para que lo hagan por ustedes mismo:

Pasos
1- Agregue al final del fichero propel.ini que se encuentra en la carpeta Config del   proyecto symfony siguiente línea  propel.selected.tablas     = [nametabla1,nametabla2]
donde nametabla1 es el nombre de la 1era tabla que se quiere generar el modelo, separado por una coma coloca a continuación el nombre de la otra tabla y así sucesivamente.
2- En el fichero /proyecto/lib/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/PropelCreoleTransformTask.php:
Agregue el método:
  public function especificTables(){
		$tables=array();
		$path=sfConfig::get(&#039;sf_config_dir&#039;).&#039;/propel.ini&#039;;
		$content=file_get_contents($path);
		$posinicial=strpos($content,&#039;[&#039;);
		if ($posinicial===false) return null;
		$posfinal=strpos($content,&#039;]&#039;);
		
		$strtables=substr($content,$posinicial+1,$posfinal-$posinicial-1);
		$tables=explode(&#039;,&#039;,$strtables);
		//print($strtables);
		print($tables[0]);
	     return $tables;
		
	}
luego de de esto borre el método createDatabaseNode() y pegue en su lugar el siguiente código: protected function createDatabaseNode($dbInfo) {

		$this-&gt;log(&quot;Processing database&quot;);

		$node = $this-&gt;doc-&gt;createElement(&quot;database&quot;);
		$node-&gt;setAttribute(&quot;name&quot;, $dbInfo-&gt;getName());

		if ($vendorNode = $this-&gt;createVendorInfoNode($dbInfo-&gt;getVendorSpecificInfo())) {
			$node-&gt;appendChild($vendorNode);
		}

		// create and add table nodes
		$tables=$this-&gt;especificTables();
		
		foreach($dbInfo-&gt;getTables() as $table) {
			
				if (($tables==null) &#124;&#124; (array_search($table-&gt;toString(),$tables)!== false )) {  
		    	$tableNode = $this-&gt;createTableNode($table);
			    $node-&gt;appendChild($tableNode);
			}
		}

		return $node;
	}
3-  En el fichero /proyecto/lib/symfony/lib/plugins/sfPropelPlugin/lib/task/sfPropelBuildSchemaTask.class.php    En el método execute encontrará la siguiente línea de código  $schema = preg_replace(&#039;/&lt;database\s+name=&quot;[^&quot;]+&quot;/s&#039;, &#039;run();  //Genero el esquema
		   
		  $modeltask  =new  sfPropelBuildModelTask($dis,$fr);
		  $modeltask-&gt;run();  //Genero el modelo a partir del esquema anteriormente creado
		  
		  $cachestask= new sfCacheClearTask($dis,$fr);
		  $cachestask-&gt;run(); // limpio la caché
		  
                // Salvo un estudiante para la BD a partir de la clases creadas dinámicamente.
		  $est=new Estudiante();
		  $est-&gt;setNombre(&quot;Ernesto Sarduy&quot;);
		  $est-&gt;save();                                         
 }
}
 
Espero le sirva a alguien ...</description>
		<content:encoded><![CDATA[<p>En mi proyecto necesitaba crear dinámicamente algunas tablas  en la BD, usamos symfony 1.1.7, y como ORM  PROPEL. Investigando en el código de PROPEL y en INTERNET, me dí cuenta que no había forma de generar  el modelo (Clases Persistentes) de una porción de la BD, en este caso de las tablas que generaba dinámicamente. </p>
<p>Por ello decidí programar algo sencillo que me permitiese hacerlo. Aquí les dejo una pequeña guía para que lo hagan por ustedes mismo:</p>
<p>Pasos<br />
1- Agregue al final del fichero propel.ini que se encuentra en la carpeta Config del   proyecto symfony siguiente línea  propel.selected.tablas     = [nametabla1,nametabla2]<br />
donde nametabla1 es el nombre de la 1era tabla que se quiere generar el modelo, separado por una coma coloca a continuación el nombre de la otra tabla y así sucesivamente.<br />
2- En el fichero /proyecto/lib/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/phing/PropelCreoleTransformTask.php:<br />
Agregue el método:<br />
  public function especificTables(){<br />
		$tables=array();<br />
		$path=sfConfig::get(&#8216;sf_config_dir&#8217;).&#8217;/propel.ini&#8217;;<br />
		$content=file_get_contents($path);<br />
		$posinicial=strpos($content,&#8217;[');<br />
		if ($posinicial===false) return null;<br />
		$posfinal=strpos($content,']&#8216;);</p>
<p>		$strtables=substr($content,$posinicial+1,$posfinal-$posinicial-1);<br />
		$tables=explode(&#8216;,&#8217;,$strtables);<br />
		//print($strtables);<br />
		print($tables[0]);<br />
	     return $tables;</p>
<p>	}<br />
luego de de esto borre el método createDatabaseNode() y pegue en su lugar el siguiente código: protected function createDatabaseNode($dbInfo) {</p>
<p>		$this-&gt;log(&#8220;Processing database&#8221;);</p>
<p>		$node = $this-&gt;doc-&gt;createElement(&#8220;database&#8221;);<br />
		$node-&gt;setAttribute(&#8220;name&#8221;, $dbInfo-&gt;getName());</p>
<p>		if ($vendorNode = $this-&gt;createVendorInfoNode($dbInfo-&gt;getVendorSpecificInfo())) {<br />
			$node-&gt;appendChild($vendorNode);<br />
		}</p>
<p>		// create and add table nodes<br />
		$tables=$this-&gt;especificTables();</p>
<p>		foreach($dbInfo-&gt;getTables() as $table) {</p>
<p>				if (($tables==null) || (array_search($table-&gt;toString(),$tables)!== false )) {<br />
		    	$tableNode = $this-&gt;createTableNode($table);<br />
			    $node-&gt;appendChild($tableNode);<br />
			}<br />
		}</p>
<p>		return $node;<br />
	}<br />
3-  En el fichero /proyecto/lib/symfony/lib/plugins/sfPropelPlugin/lib/task/sfPropelBuildSchemaTask.class.php    En el método execute encontrará la siguiente línea de código  $schema = preg_replace(&#8216;/&lt;database\s+name=&#8221;[^"]+&#8221;/s&#8217;, &#8216;run();  //Genero el esquema</p>
<p>		  $modeltask  =new  sfPropelBuildModelTask($dis,$fr);<br />
		  $modeltask-&gt;run();  //Genero el modelo a partir del esquema anteriormente creado</p>
<p>		  $cachestask= new sfCacheClearTask($dis,$fr);<br />
		  $cachestask-&gt;run(); // limpio la caché</p>
<p>                // Salvo un estudiante para la BD a partir de la clases creadas dinámicamente.<br />
		  $est=new Estudiante();<br />
		  $est-&gt;setNombre(&#8220;Ernesto Sarduy&#8221;);<br />
		  $est-&gt;save();<br />
 }<br />
}</p>
<p>Espero le sirva a alguien &#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: rpsblog.com &#187; A week of symfony #97 (3-&#38;gt;9 november 2008)</title>
		<link>http://www.symfony.es/2008/11/04/se-publica-la-primera-beta-de-symfony-12/comment-page-1/#comment-9648</link>
		<dc:creator>rpsblog.com &#187; A week of symfony #97 (3-&#38;gt;9 november 2008)</dc:creator>
		<pubDate>Sun, 09 Nov 2008 23:52:46 +0000</pubDate>
		<guid isPermaLink="false">http://www.symfony.es/?p=487#comment-9648</guid>
		<description>[...] Se publica la primera beta de Symfony 1.2 [...]</description>
		<content:encoded><![CDATA[<p>[...] Se publica la primera beta de Symfony 1.2 [...]</p>
]]></content:encoded>
	</item>
</channel>
</rss>

