Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

maubiasotto

[Resolvido] Gravando em duas tabelas

Recommended Posts

Fala galera, to aqui no apredizado do cake, to curtindo, mas sempre empaco em umas partes.

 

Então preciso da ajuda de vocês.

 

Em resumo é um sistema financeiro. Então em uma parte te a sessão projetos, nessa sessão o projeto pode ter varias parcelas, eu fiz em ajax para ir inclundo campo conforme o cliente precisar.

 

Exemplo.

 

Projeto

- Nome do projeto

 

Dados variaveis que vai ter um link 'incluir mais', então essa parte de data, e valor da parcela pode ter 1 ou 12, ou até mais.

- Data da parcela

- Valor da parcela

 

Minhas tabelas estão assim

 

tbl_projeto

- id_projeto

- nome_projeto

 

tbl_parcelas

- id_projeto

- data

- valor

 

Eu tenho as duvidas na view e na controle na hora de salvar, não sei se o saveall faz isso.

 

na view para o nome do projeto eu deixo assim

$form->input('nome_projeto')

 

Já não sei como deixo esses camos variavel.

 

e no save não faço nem ideia.

 

Preciso muito disso, se alguem poder me ajudar agradeço desde já!

 

Abraço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Para multiplos:

$form->input('MeuModel.0.nome_projeto');
$form->input('MeuModel.1.nome_projeto');
$form->input('MeuModel.2.nome_projeto');

http://book.cakephp.org/view/189/Automagic-Form-Elements

 

E para salvar isso utilize saveAll:

http://lucaspelegrino.com/18/dica-rapida-salvando-dados-de-diferentes-models-ao-mesmo-tempo-com-cakephp/

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não entendi muito bem, mostre como está seu código. (de preferencia com os models ja no view, para facilitar, exemplo:

$form->input('MeuModel1.meucampo');
$form->input('MeuOutroModel.outrocampo');
)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Posso sim, segue os codigos

 

Model:

<?php

class Projeto extends AppModel{
        var $name="Projeto";

	var $useTable = "tbl_projetos";
	var $primaryKey = "id";

        var $hasMany = array('Parcela');


}


class Parcela extends AppModel{
        var $name = "Parcela";
        var $useTable = "tbl_parcela";

        var $belongsTo = array('Projeto');


}

?>

Controller:

class ProjetosController extends AppController{
   var $nome = "Projeto";//php 4
   var $helpers = array('Html','Javascript', 'Form');


        //incluir empresa
        function add(){

            //grava no banco
            if (!empty($this->data)) {
                //print_r($this->data);

                $this->Projeto->saveAll($this->data);

            }
            

         }



  
}

 

View:

<h2>Projetos > Incluir</h2>

<?php echo $form->create('Projeto',array('action'=>'add')); ?>

<?php echo $form->input('descricao');?>

<?php echo $form->input('Parcela.0.data');?>

<?php echo $form->input('Parcela.1.data');?>

<input class="bottom_big" type="submit" value="CADASTRAR" />

<?php echo $form->end(); ?>

 

O codigo esta gravando nas duas tabelas:

INSERT INTO `tbl_projetos` (`descricao`) VALUES ('teste')		1		0
6	SELECT LAST_INSERT_ID() AS insertID		1	1	0
7	INSERT INTO `tbl_parcela` (`data`) VALUES ('2009-11-26')		1		0
8	SELECT LAST_INSERT_ID() AS insertID		1	1	0
9	INSERT INTO `tbl_parcela` (`data`) VALUES ('2009-11-26')		1		0
10	SELECT LAST_INSERT_ID() AS insertID

Mas na tabela parcela ele não esta gravando o 'projeto_id'. Então os dados que estão sendo gravado esta sem o Id do projeto, quando precisar relacionar, saber quis são as parcelas do projeto não irei conseguir.

 

o certo seria ficar assim

 

INSERT INTO `tbl_parcela` (`data`,'projeto_id') VALUES ('2009-11-26','1')

 

 

 

Valeu

Compartilhar este post


Link para o post
Compartilhar em outros sites

Depois de pesquisar a tarde inteira, fazer varios testes acho que consegui, pelo menos ta dando certo por enquanto!rs

 

Para quem ficar om duvida com isso também estou colocando aqui o que eu coloqui no codigo.

 

Da parte do model, no HasMany ficou assim

 

var $hasMany = array('Parcela' => array(
			'foreignKey' => 'projeto_id',
			'dependent' => true
		)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não fique triste não, logo logo irei postar mais dúvidas aqui!rs

 

to curtindo trabalhar com o cake, que nesse primeiro projeto ta demorando mais pelo fato de aprender,mas um outro projeto se precisar usar essa parte que ja sei ira ser bem produtivo.

 

Valeu pelas ajudas Lucas e zenfra!

 

Abraço

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.