..:: MX Studio Fóruns ::..: URGENTE - Problemas com o metodo save() - ..:: MX Studio Fóruns ::..

Jump to content

Publicidade




Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

URGENTE - Problemas com o metodo save() Acho que este é um trabalho para Hufersil!!!!

#1 User is offline   liba 

  • Group: Membros
  • Posts: 20
  • Joined: 17-December 05

Posted 05 February 2007 - 02:11 AM

Olá amigos, estou tendo problemas para savar um registro utilizando o Lumine.

Tenho uma entidade chamada Grupo e com os campos:
codigo varcha(20) primary key,
nome varchar(50),
icone varchar(250),
ativo varchar(1)

Este campo codigo tem valores seuqnecias para poder montar os registros em forma de árvore. Por ecemplo:
Para eu ter uma estrutura de arvore abaixo:
- Grupo 1
|_ Grupo 1.1
|_ Grupo 1.2
| |_ Grupo 1.2.1
|_ Grupo 1.3
- Grupo 2
|_ Grupo 2.1
|_ Grupo 2.1.1
| |_ Grupo 2.1.1.1
|_ Grupo 2.1.2

Eu teria os campos gravados na tabela, seguindo (codigo, nome, icone, ativo):
'01', 'Grupo 1', '', 'S';
'0101', 'Grupo 1.1', '', 'S';
'0102', 'Grupo 1.2', '', 'S';
'010201', 'Grupo 1.2.1', '', 'S';
'0103', 'Grupo 1.3', '', 'S';
'02', 'Grupo 2', '', 'S';
'0201', 'Grupo 2.1', '', 'S';
'020101', 'Grupo 2.1.1', '', 'S';
'02010101', 'Grupo 2.1.1.1', '', 'S';
'020102', 'Grupo 2.1.2', '', 'S';

Então, como pode ficar claro, meus códigos não são auto_inc pois seguem uma espécie de hierarquia.

Para gravar, estava fazendo assim:
...
$_POST["codigo"] = getNextCodigo($_POST["grupoPai"]); //Função que retorna o próximo Código baseado no grupo Pai
$grupo->setFrom($_POST);
$grupo->save(); //Aqui está meu problema!!!

Coloquei o LumineLog::setLevel(3, 'bowser') e viu que ele não estava incluindo pois ele sempre executava um UPDATE e não um INSERT.

Gostaria de saber como é que faço pra corrigir isto ou o Lumine não contempla um código ou campo ID que não seja auto_inc. O que devo fazer?

Tenho um pouco de urgencia pois estou com o projetos atrazado há 3 dias por causa deste único problema.

Fico no agaurdo e desde já agradeço a atenção....


0

#2 User is offline   hufersil 

  • Group: Moderadores
  • Posts: 1265
  • Joined: 15-January 04

Posted 05 February 2007 - 09:24 AM

como você está utilizando uma chave primária que não é auto-increment, utilize o método insert, para forçar a inserção, só utilize o método save, neste caso, quando querer realizar um update.

$obj->insert();

Nota: Este método que você está usando para fazer menu com submenu, é meio estranho e limitado, porque vc tem somente duas casas decimais para cada grupo. Tente fazer da seguinte forma:

CODE
CREATE TABLE `tbl_modulo` (
  `idmodulo` int(11) NOT NULL auto_increment,
  `idpai` int(11) default NULL,
  `nome` varchar(255) NOT NULL default '',
  `icone` varchar(255) default NULL,
  `ativo` varchar(1) default 'S',
  PRIMARY KEY  (`idmodulo`),
  KEY `IX_Relationship27` (`idpai`),
  CONSTRAINT `tbl_modulo_ibfk_1` FOREIGN KEY (`idpai`) REFERENCES `tbl_modulo` (`idmodulo`) ON DELETE CASCADE ON UPDATE CASCADE
) TYPE=InnoDB



Note a existência do campo idpai, e ele ser uma chave estrangeira referenciada para a própria tabela. Dessa forma, quando o campo estiver nulo (note que o campo permite null) ele é um menu de nível superior, e quando tiver um valor referenciando para um módulo já existente, ele é um sub-módulo. Dessa forma, você pode fazer infinitos sub-menus, e ainda por cima pode checar se está correto com o uso de chaves estrangeiras.

exemplo:
1 - Principal (pai = null)
2 - Secundário (pai = 1)
3 - Terciário (pai = 2 )

1.null - Principal
2.1 - Secundário
3.2 - Terciário

@braços e fique com Deus!
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic



Publicidade




1 User(s) are reading this topic
0 membro(s), 1 visitante(s) e 0 membros anônimo(s)