<?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>:: Blog do Guilherme :: &#187; Zend Framework</title>
	<atom:link href="http://www.guilhermepsa.com/category/desenvolvimento-web/php/zend-framework/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.guilhermepsa.com</link>
	<description>Tecnologia da Informação, Música, Carro e muito mais...</description>
	<lastBuildDate>Thu, 18 Aug 2011 21:55:48 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Como utilizar o Zend_Db_Table sem precisar vincular uma entidade de Banco</title>
		<link>http://www.guilhermepsa.com/2010/04/09/como-utilizar-o-zend_db_table-sem-precisar-vincular-uma-entidade-de-banco/</link>
		<comments>http://www.guilhermepsa.com/2010/04/09/como-utilizar-o-zend_db_table-sem-precisar-vincular-uma-entidade-de-banco/#comments</comments>
		<pubDate>Fri, 09 Apr 2010 12:53:28 +0000</pubDate>
		<dc:creator>Guilherme</dc:creator>
				<category><![CDATA[Desenvolvimento Web]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Zend Framework]]></category>

		<guid isPermaLink="false">http://www.guilhermepsa.com/?p=24</guid>
		<description><![CDATA[Quem usa o ZendFramework, provavelmente já passou muita raiva pois ele gera aquela mensagem &#8220;simpática&#8221;: &#8220;A table must have a primary key, but none was found&#8221;. Isso se deve ao fato de a classe Zend_Db_Table / Zend_Db_Table_Abstract tentar fazer os mapeamentos de nome da entidade, colunas e chave primária &#8211; em suma, efetuar um describe [...]]]></description>
			<content:encoded><![CDATA[<p>Quem usa o ZendFramework, provavelmente já passou muita raiva pois ele gera aquela mensagem &#8220;simpática&#8221;: <em>&#8220;A table must have a primary key, but none was found&#8221;.</em> Isso se deve ao fato de a classe Zend_Db_Table / Zend_Db_Table_Abstract tentar fazer os mapeamentos de nome da entidade, colunas e chave primária &#8211; em suma, efetuar um describe da entidade informada.</p>
<p>Mas há momentos em que o modelo não representa uma entidade do banco. Por exemplo, pode-se usar o modelo para executar uma função, uma procedure ou uma consulta à uma &#8220;View&#8221; de banco. Trabalhando nessa estrutura, onde o modelo representa os dados persistidos no banco, esse paradigma é quebrado.</p>
<p>O Zend Framework é bastante flexível em vários quesitos; um deles é o quesito mapeamento de dados, é possível sobrescrever algums métodos da classe herdada (Zend_Db_Table / Zend_Db_Table_Abstract). Um desses é o método <em>&#8220;_setupPrimaryKey&#8221;</em>, responsável por instanciar a chave primária da tabela; metódo, também, responsável por gerar a exceção quando, no mapeamento, não é encontrada a chave primária à partir das colunas buscadas à partir de um describe da tabela. Todo esse processo é executado automaticamente pelo Zend_Db.</p>
<p>Para resolver esse problema, é necessário forçar o mapeamento manual de algumas variáveis utilizadas pela classe &#8220;pai&#8221;. Nessa situação, foi suficiente forçar a variável &#8220;$this-&gt;_cols&#8221; para um vetor vazio. Adicionalmente, foi informado como vazio o nome da tabela, porém a classe pai define como sendo o nome da Classe filha o valor dessa variável ($this-&gt;_name).</p>
<p>Portanto, para trabalhar nessa estrutura, onde o modelo não representa uma entidade no banco basta sobrescrever o método <em>&#8220;_setupPrimaryKey&#8221;</em>:</p>
<blockquote><p>public function _setupPrimaryKey() {<br />
$this-&gt;_cols = array();<br />
$this-&gt;_name = &#8220;&#8221;;<br />
}</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.guilhermepsa.com/2010/04/09/como-utilizar-o-zend_db_table-sem-precisar-vincular-uma-entidade-de-banco/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

