<?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>Comentários sobre: Cakephp &#8211; Inserindo mais de um registro no banco de dados</title>
	<atom:link href="http://www.renanlima.com/blog/inserindo-mais-de-um-registro-no-banco-de-dados/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.renanlima.com/blog/inserindo-mais-de-um-registro-no-banco-de-dados/</link>
	<description>Empreendedorismo, SEO, tecnologia e motivação</description>
	<lastBuildDate>Tue, 24 Jan 2012 14:09:39 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
	<item>
		<title>Por: Tylër</title>
		<link>http://www.renanlima.com/blog/inserindo-mais-de-um-registro-no-banco-de-dados/comment-page-1/#comment-645</link>
		<dc:creator>Tylër</dc:creator>
		<pubDate>Tue, 14 Sep 2010 01:23:51 +0000</pubDate>
		<guid isPermaLink="false">http://www.renanlima.com/blog/?p=915#comment-645</guid>
		<description>Renan, veja:

function admin_setCorretor() {
        if( !empty($this-&gt;data) ) {
            $msg_id = $this-&gt;data[&#039;Corretor&#039;][&#039;contato_id&#039;]; # recupera a id da mensagem
            $corretor = $this-&gt;data[&#039;Corretor&#039;][&#039;id&#039;]; # recupera um ou mais corretores
            if( empty($corretor) ) {
                $this-&gt;Session-&gt;setFlash( &#039;Selecione pelo menos 1 corretor!&#039;, &#039;default&#039;, array( &#039;class&#039;=&gt;&#039;flash_bad&#039; ) );
            } else if( !empty($corretor) ) {
                # Atualiza o status da mensagem para &#039;1&#039;=&gt;&#039;pendente&#039;
                $this-&gt;data[&#039;Corretor&#039;][&#039;status_msg&#039;] = &#039;1&#039;;
                $this-&gt;data[&#039;Corretor&#039;][&#039;obs&#039;] = &#039;&#039;;
                pr( $this-&gt;data[&#039;Corretor&#039;] );
                foreach( $this-&gt;data[&#039;Corretor&#039;] as $valor ) {
                    $this-&gt;Corretor-&gt;save( $valor );
                    $this-&gt;Corretor-&gt;id = null;
                }
                $this-&gt;Session-&gt;setFlash( &#039;Mensagem encaminhada!&#039;, &#039;default&#039;, array( &#039;class&#039;=&gt;&#039;flash_good&#039; ) );
            }
        } else {
            $this-&gt;Session-&gt;setFlash( &#039;Selecione uma mensagem!&#039;, &#039;default&#039;, array( &#039;class&#039;=&gt;&#039;flash_bad&#039; ) );
        }
        $this-&gt;redirect( &#039;/admin/mensagens/&#039; );
    }


O array está:

Array
(
    [contato_id] =&gt; 1
    [id] =&gt; Array
        (
            [0] =&gt; 2
            [1] =&gt; 3
        )

    [status_msg] =&gt; 1
    [obs] =&gt; 
)</description>
		<content:encoded><![CDATA[<p>Renan, veja:</p>
<p>function admin_setCorretor() {<br />
        if( !empty($this-&gt;data) ) {<br />
            $msg_id = $this-&gt;data['Corretor']['contato_id']; # recupera a id da mensagem<br />
            $corretor = $this-&gt;data['Corretor']['id']; # recupera um ou mais corretores<br />
            if( empty($corretor) ) {<br />
                $this-&gt;Session-&gt;setFlash( &#8216;Selecione pelo menos 1 corretor!&#8217;, &#8216;default&#8217;, array( &#8216;class&#8217;=&gt;&#8217;flash_bad&#8217; ) );<br />
            } else if( !empty($corretor) ) {<br />
                # Atualiza o status da mensagem para &#8217;1&#8242;=&gt;&#8217;pendente&#8217;<br />
                $this-&gt;data['Corretor']['status_msg'] = &#8217;1&#8242;;<br />
                $this-&gt;data['Corretor']['obs'] = &#8221;;<br />
                pr( $this-&gt;data['Corretor'] );<br />
                foreach( $this-&gt;data['Corretor'] as $valor ) {<br />
                    $this-&gt;Corretor-&gt;save( $valor );<br />
                    $this-&gt;Corretor-&gt;id = null;<br />
                }<br />
                $this-&gt;Session-&gt;setFlash( &#8216;Mensagem encaminhada!&#8217;, &#8216;default&#8217;, array( &#8216;class&#8217;=&gt;&#8217;flash_good&#8217; ) );<br />
            }<br />
        } else {<br />
            $this-&gt;Session-&gt;setFlash( &#8216;Selecione uma mensagem!&#8217;, &#8216;default&#8217;, array( &#8216;class&#8217;=&gt;&#8217;flash_bad&#8217; ) );<br />
        }<br />
        $this-&gt;redirect( &#8216;/admin/mensagens/&#8217; );<br />
    }</p>
<p>O array está:</p>
<p>Array<br />
(<br />
    [contato_id] =&gt; 1<br />
    [id] =&gt; Array<br />
        (<br />
            [0] =&gt; 2<br />
            [1] =&gt; 3<br />
        )</p>
<p>    [status_msg] =&gt; 1<br />
    [obs] =&gt;<br />
)</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: Richard@Home</title>
		<link>http://www.renanlima.com/blog/inserindo-mais-de-um-registro-no-banco-de-dados/comment-page-1/#comment-642</link>
		<dc:creator>Richard@Home</dc:creator>
		<pubDate>Fri, 10 Sep 2010 07:52:48 +0000</pubDate>
		<guid isPermaLink="false">http://www.renanlima.com/blog/?p=915#comment-642</guid>
		<description>Daniel, Renan&#039;s solution to find the insert ID is fine if only one person is using the app at any one time. If someone else inserts a record while you are performing the query the ID you get back will be wrong.

The Cake way is:

$this-&gt;Model-&gt;save($data);
$last_insert_id = $this-&gt;Model-&gt;id

or

$last_insert_id = $this-&gt;Model-&gt;getInsertID();

see: http://api.cakephp.org/class/model#method-ModelgetInsertID</description>
		<content:encoded><![CDATA[<p>Daniel, Renan&#8217;s solution to find the insert ID is fine if only one person is using the app at any one time. If someone else inserts a record while you are performing the query the ID you get back will be wrong.</p>
<p>The Cake way is:</p>
<p>$this-&gt;Model-&gt;save($data);<br />
$last_insert_id = $this-&gt;Model-&gt;id</p>
<p>or</p>
<p>$last_insert_id = $this-&gt;Model-&gt;getInsertID();</p>
<p>see: <a href="http://api.cakephp.org/class/model#method-ModelgetInsertID" rel="nofollow">http://api.cakephp.org/class/model#method-ModelgetInsertID</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: Renan Lima</title>
		<link>http://www.renanlima.com/blog/inserindo-mais-de-um-registro-no-banco-de-dados/comment-page-1/#comment-640</link>
		<dc:creator>Renan Lima</dc:creator>
		<pubDate>Wed, 08 Sep 2010 16:24:28 +0000</pubDate>
		<guid isPermaLink="false">http://www.renanlima.com/blog/?p=915#comment-640</guid>
		<description>Rapaz, como está o array da variável $this-&gt;data[&#039;Corretor&#039;] ? Algo nesse array não está certo. Posta ele aqui.</description>
		<content:encoded><![CDATA[<p>Rapaz, como está o array da variável $this-&gt;data['Corretor'] ? Algo nesse array não está certo. Posta ele aqui.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: Tylër</title>
		<link>http://www.renanlima.com/blog/inserindo-mais-de-um-registro-no-banco-de-dados/comment-page-1/#comment-631</link>
		<dc:creator>Tylër</dc:creator>
		<pubDate>Fri, 03 Sep 2010 14:22:40 +0000</pubDate>
		<guid isPermaLink="false">http://www.renanlima.com/blog/?p=915#comment-631</guid>
		<description>E ae, tenho o seguite array, já em ordem de salvar no BD

Array
(
    [id] =&gt; Array
        (
            [0] =&gt; 3
            [1] =&gt; 4
        )

    [contato_id] =&gt; 1
)


Gostaria que fossem salvos vários registros, pois o campo id receberá 1 ou mais registros, já o campo contato_id será sempre apenas 1 registro...

Code:

foreach( $this-&gt;data[&#039;Corretor&#039;] as $itens ) {
  $this-&gt;Corretor-&gt;save( $itens );
  $this-&gt;Corretor-&gt;id = null;
}

Mas não cadastra nada! =/


E já se modificar o $this-&gt;save() desta forma:
$this-&gt;Corretor-&gt;save( $this-&gt;data[&#039;Corretor&#039;] );
me retorna o seguinte erro:
Query: INSERT INTO `contatos` (`id`, `contato_id`) VALUES (Array, 1)

Query: INSERT INTO `contatos` (`id`, `contato_id`) VALUES (Array, 1) 

Bom, pelo que vi até agora, não estou conseguindo recuperar o array de ids para salvar, é isso...</description>
		<content:encoded><![CDATA[<p>E ae, tenho o seguite array, já em ordem de salvar no BD</p>
<p>Array<br />
(<br />
    [id] =&gt; Array<br />
        (<br />
            [0] =&gt; 3<br />
            [1] =&gt; 4<br />
        )</p>
<p>    [contato_id] =&gt; 1<br />
)</p>
<p>Gostaria que fossem salvos vários registros, pois o campo id receberá 1 ou mais registros, já o campo contato_id será sempre apenas 1 registro&#8230;</p>
<p>Code:</p>
<p>foreach( $this-&gt;data['Corretor'] as $itens ) {<br />
  $this-&gt;Corretor-&gt;save( $itens );<br />
  $this-&gt;Corretor-&gt;id = null;<br />
}</p>
<p>Mas não cadastra nada! =/</p>
<p>E já se modificar o $this-&gt;save() desta forma:<br />
$this-&gt;Corretor-&gt;save( $this-&gt;data['Corretor'] );<br />
me retorna o seguinte erro:<br />
Query: INSERT INTO `contatos` (`id`, `contato_id`) VALUES (Array, 1)</p>
<p>Query: INSERT INTO `contatos` (`id`, `contato_id`) VALUES (Array, 1) </p>
<p>Bom, pelo que vi até agora, não estou conseguindo recuperar o array de ids para salvar, é isso&#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: Tiago</title>
		<link>http://www.renanlima.com/blog/inserindo-mais-de-um-registro-no-banco-de-dados/comment-page-1/#comment-569</link>
		<dc:creator>Tiago</dc:creator>
		<pubDate>Thu, 25 Feb 2010 13:02:14 +0000</pubDate>
		<guid isPermaLink="false">http://www.renanlima.com/blog/?p=915#comment-569</guid>
		<description>E ae cara, se você usar saveAll poderá inserir os registros no banco de dados todos de uma vez.</description>
		<content:encoded><![CDATA[<p>E ae cara, se você usar saveAll poderá inserir os registros no banco de dados todos de uma vez.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: Daniel</title>
		<link>http://www.renanlima.com/blog/inserindo-mais-de-um-registro-no-banco-de-dados/comment-page-1/#comment-493</link>
		<dc:creator>Daniel</dc:creator>
		<pubDate>Mon, 09 Nov 2009 19:31:28 +0000</pubDate>
		<guid isPermaLink="false">http://www.renanlima.com/blog/?p=915#comment-493</guid>
		<description>Opa, Valeu Renan, vai me ser útil isso com certeza. Só nesse caso que eu precisava, acabei encontrando outra forma. Para deixar aqui para o pessoal, é seguinte; Como comentei tenho vários formulários na mesma tela, que cada um corresponde a uma tabela no bd, o que fiz é deixar os campos dos formularios com nomes corretos, e na hora de gravar ao invés de save(), dei um saveAll(). Pronto isso foi o suficiente, para ele gravar os dados, retornar o id e inserir tudo corretamente, SOZINHO! não precisei sequer retornar id. Show!

Segue um campo de exemplo:
MVC = Candidato
Campo = 

MVC = Formacao
Campo = 

E na hora de salvar:
$this-&gt;Candidato-&gt;saveAll($this-&gt;data, array(&#039;validate&#039;=&gt;&#039;first&#039;))

Pronto! Ele grava o candidato e já grava os relacionamentos sozinho, e o validate garante a validação de todos os campos de acordo com o que foi definido nos models de cada tabela. Claro que os campos das tabelas devem estar de acordo com o padrão do cake para relacionamentos.</description>
		<content:encoded><![CDATA[<p>Opa, Valeu Renan, vai me ser útil isso com certeza. Só nesse caso que eu precisava, acabei encontrando outra forma. Para deixar aqui para o pessoal, é seguinte; Como comentei tenho vários formulários na mesma tela, que cada um corresponde a uma tabela no bd, o que fiz é deixar os campos dos formularios com nomes corretos, e na hora de gravar ao invés de save(), dei um saveAll(). Pronto isso foi o suficiente, para ele gravar os dados, retornar o id e inserir tudo corretamente, SOZINHO! não precisei sequer retornar id. Show!</p>
<p>Segue um campo de exemplo:<br />
MVC = Candidato<br />
Campo = </p>
<p>MVC = Formacao<br />
Campo = </p>
<p>E na hora de salvar:<br />
$this-&gt;Candidato-&gt;saveAll($this-&gt;data, array(&#8216;validate&#8217;=&gt;&#8217;first&#8217;))</p>
<p>Pronto! Ele grava o candidato e já grava os relacionamentos sozinho, e o validate garante a validação de todos os campos de acordo com o que foi definido nos models de cada tabela. Claro que os campos das tabelas devem estar de acordo com o padrão do cake para relacionamentos.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: Renan Lima</title>
		<link>http://www.renanlima.com/blog/inserindo-mais-de-um-registro-no-banco-de-dados/comment-page-1/#comment-486</link>
		<dc:creator>Renan Lima</dc:creator>
		<pubDate>Fri, 06 Nov 2009 10:40:17 +0000</pubDate>
		<guid isPermaLink="false">http://www.renanlima.com/blog/?p=915#comment-486</guid>
		<description>Daniel, pra pegar o post mais recente vc pode fazer o seguinte:

$options = array(
     &#039;order&#039;=&gt;array(
          &#039;Model.id&#039;=&gt;&#039;desc&#039;
     ),
     &#039;limit&#039;=&gt;1
);
$this-&gt;Model-&gt;find(&#039;first&#039;,$options);

Dessa forma você ordena de baxo pra cima e limitando para um, pega o post mais recente.

[]&#039;s</description>
		<content:encoded><![CDATA[<p>Daniel, pra pegar o post mais recente vc pode fazer o seguinte:</p>
<p>$options = array(<br />
     &#8216;order&#8217;=>array(<br />
          &#8216;Model.id&#8217;=>&#8217;desc&#8217;<br />
     ),<br />
     &#8216;limit&#8217;=>1<br />
);<br />
$this->Model->find(&#8216;first&#8217;,$options);</p>
<p>Dessa forma você ordena de baxo pra cima e limitando para um, pega o post mais recente.</p>
<p>[]&#8216;s</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: Daniel</title>
		<link>http://www.renanlima.com/blog/inserindo-mais-de-um-registro-no-banco-de-dados/comment-page-1/#comment-484</link>
		<dc:creator>Daniel</dc:creator>
		<pubDate>Thu, 05 Nov 2009 23:07:03 +0000</pubDate>
		<guid isPermaLink="false">http://www.renanlima.com/blog/?p=915#comment-484</guid>
		<description>Estou procurando como pegar o último ID inserido pelo save(). Ainda não encontrei, mas esse seu post vai ser muito útil, pois a próxima dúvida era exatamente essa. Vou testar amanhã pra ver se consigo. No meu caso é para um Banco de currículos, acho q vai servir pra cadastrar as X experiências, X formações, X idiomas, etc.....
valeu por enquanto e parabéns pelo post.</description>
		<content:encoded><![CDATA[<p>Estou procurando como pegar o último ID inserido pelo save(). Ainda não encontrei, mas esse seu post vai ser muito útil, pois a próxima dúvida era exatamente essa. Vou testar amanhã pra ver se consigo. No meu caso é para um Banco de currículos, acho q vai servir pra cadastrar as X experiências, X formações, X idiomas, etc&#8230;..<br />
valeu por enquanto e parabéns pelo post.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: Renan Lima</title>
		<link>http://www.renanlima.com/blog/inserindo-mais-de-um-registro-no-banco-de-dados/comment-page-1/#comment-439</link>
		<dc:creator>Renan Lima</dc:creator>
		<pubDate>Tue, 29 Sep 2009 13:21:29 +0000</pubDate>
		<guid isPermaLink="false">http://www.renanlima.com/blog/?p=915#comment-439</guid>
		<description>Obrigado pela dica Richard. Atualizei o artigo com sua dica.
Thanks for the tip Richard. I updated the article with your tip.</description>
		<content:encoded><![CDATA[<p>Obrigado pela dica Richard. Atualizei o artigo com sua dica.<br />
Thanks for the tip Richard. I updated the article with your tip.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: Richard@Home</title>
		<link>http://www.renanlima.com/blog/inserindo-mais-de-um-registro-no-banco-de-dados/comment-page-1/#comment-438</link>
		<dc:creator>Richard@Home</dc:creator>
		<pubDate>Tue, 29 Sep 2009 12:31:54 +0000</pubDate>
		<guid isPermaLink="false">http://www.renanlima.com/blog/?p=915#comment-438</guid>
		<description>If you are doing multiple inserts with Cake, you should call &lt;code&gt;$this-&gt;Model-&gt;create()&lt;/code&gt; before each save, or use &lt;code&gt;$this-&gt;Model-&gt;saveAll($data);&lt;/code&gt;

http://book.cakephp.org/view/75/Saving-Your-Data</description>
		<content:encoded><![CDATA[<p>If you are doing multiple inserts with Cake, you should call <code>$this->Model->create()</code> before each save, or use <code>$this->Model->saveAll($data);</code></p>
<p><a href="http://book.cakephp.org/view/75/Saving-Your-Data" rel="nofollow">http://book.cakephp.org/view/75/Saving-Your-Data</a></p>
]]></content:encoded>
	</item>
</channel>
</rss>

