..:: MX Studio Fóruns ::..: Engenharia reversa MANY-TO-MANY usando Lumine - ..:: MX Studio Fóruns ::..

Jump to content

Publicidade




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

Engenharia reversa MANY-TO-MANY usando Lumine

#1 User is offline   quinhone 

  • Group: Membros
  • Posts: 10
  • Joined: 28-June 05

Posted 17 January 2010 - 10:50 PM

Pessoal, estou tentando criar relacionamento Many-to-Many no Lumine, mas não estou conseguindo
de todas as formas que faço na tabela sempre ele cria como ONE-to-MANY

Alguém pode me ajudar?

Segue abaixo os dados:
CÓDIGO
DROP TABLE IF EXISTS `especialidades`;

CREATE TABLE `especialidades` (
  `espec_id` int(11) NOT NULL AUTO_INCREMENT,
  `espec_desc` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci,
  PRIMARY KEY(`espec_id`),
  INDEX `new_index30`(`espec_id`)
)
ENGINE=INNODB
CHARACTER SET utf8
COLLATE utf8_general_ci;


DROP TABLE IF EXISTS `fornecedores`;

CREATE TABLE `fornecedores` (
  `forn_id` int(11) NOT NULL AUTO_INCREMENT,
  `idcidades` int(11) NOT NULL,
  `forn_tipo` enum('F','J') DEFAULT J,
  `forn_nome` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci,
  `forn_razao` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci,
  `forn_cpf` char(11),
  `forn_cnpj` char(15),
  `forn_rg` char(50) CHARACTER SET utf8 COLLATE utf8_general_ci,
  `forn_ie` char(50) CHARACTER SET utf8 COLLATE utf8_general_ci,
  `forn_fone` char(10),
  `forn_celular` char(10),
  `forn_fax` char(10),
  `forn_email` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci,
  `forn_homepage` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci,
  `forn_endereco` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci,
  `forn_numero` char(50) CHARACTER SET utf8 COLLATE utf8_general_ci,
  `forn_bairro` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci,
  `forn_sgq` enum('0','1') DEFAULT 1,
  `forn_sgqdesc` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci,
  `forn_status` enum('0','1') DEFAULT 1,
  `forn_obs` text CHARACTER SET utf8 COLLATE utf8_general_ci,
  `forn_cep` char(8),
  `forn_complemento` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci,
  `forn_logo` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci,
  PRIMARY KEY(`forn_id`),
  INDEX `idx_idcidades`(`idcidades`),
  INDEX `new_index29`(`forn_id`),
  CONSTRAINT `Ref_12` FOREIGN KEY (`idcidades`)
    REFERENCES `cidades`(`idcidades`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION
)
ENGINE=INNODB
CHARACTER SET utf8
COLLATE utf8_general_ci;



-- Drop table fornecedores_has_especialidades
DROP TABLE IF EXISTS `fornecedores_has_especialidades`;

CREATE TABLE `fornecedores_has_especialidades` (
  `forn_id` int(11) UNSIGNED NOT NULL,
  `espec_id` int(11) UNSIGNED NOT NULL,
  PRIMARY KEY(`forn_id`, `espec_id`),
  INDEX `new_index27`(`forn_id`),
  INDEX `new_index28`(`espec_id`),
  CONSTRAINT `Ref_73` FOREIGN KEY (`forn_id`)
    REFERENCES `fornecedores`(`forn_id`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
  CONSTRAINT `Ref_74` FOREIGN KEY (`espec_id`)
    REFERENCES `especialidades`(`espec_id`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION
)
ENGINE=INNODB
CHARACTER SET utf8
COLLATE utf8_general_ci;



e quando eu faço o reverso no Lumine ele cria assim:


CÓDIGO
]$this->_addForeignRelation("fornecedores_has_especialidades", self::ONE_TO_MANY, "Fornecedores_has_especialidades", "espec_id", null, null, null);

$this->_addForeignRelation("fornecedores_has_especialidades", self::ONE_TO_MANY, "Fornecedores_has_especialidades", "forn_id", null, null, null);



desde já agradeço a ajuda.

Att

Luis Carlos
0

#2 User is offline   hufersil 

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

Posted 16 March 2010 - 03:41 PM

O padrão para Lumine gerar como M-M é

nometabela1_nometabela2

OU seja, o nome das duas tabelas separados por um underline.

Na engenharia reversa, você pode alterar este padrão.

Basta colocar %s_has_%s na opção "Formato para auto-identificar tabelas M-N"

@braços e fique com Deus!
0

#3 User is offline   vinnyfmc 

  • Group: Membros
  • Posts: 1
  • Joined: 15-September 11

Posted 15 September 2011 - 03:03 AM

Boa noite a todos, estou com um problema "parecido" o caso é o seguinte possuo 3 tabelas abaixo:

DROP TABLE IF EXISTS `bar`;

CREATE TABLE `bar` (
`ID_BAR` INT(11) NOT NULL AUTO_INCREMENT,
`NM_RAZAO_SOCIAL` VARCHAR(100) NOT NULL,
`TX_NUMERO` VARCHAR(20) NOT NULL,
`TX_COMPLEMENTO` VARCHAR(20) DEFAULT NULL,
`TX_TEL_SITE` VARCHAR(10) DEFAULT NULL,
`TX_TEL_CONTATO` VARCHAR(10) NOT NULL,
`TX_LOCALIZACAO_MAPA` VARCHAR(255) NOT NULL,
`TX_NOME_RESPONSAVEL` VARCHAR(100) DEFAULT NULL,
`CD_CNPJ` CHAR(14) NOT NULL,
`TX_EMAIL_CONTATO` VARCHAR(80) DEFAULT NULL,
`DT_CADASTRO` DATE NOT NULL,
`NM_FANTASIA` VARCHAR(100) DEFAULT NULL,
`TX_SOBRE_BAR` VARCHAR(255) DEFAULT NULL,
`TX_SITE` VARCHAR(70) DEFAULT NULL,
`TX_CEP` VARCHAR(20) DEFAULT NULL,
`ST_ATIVO` CHAR(1) NOT NULL,
`ID_USUARIO` INT(11) DEFAULT NULL,
`ID_UF` CHAR(2) NOT NULL,
`ID_PLANO_FINANCEIRO` INT(11) NOT NULL,
`ID_BAIRRO` INT(11) NOT NULL,
`ID_CIDADE` INT(11) NOT NULL,
`TX_HORA_FUNCIOMTO` VARCHAR(255) DEFAULT NULL,
`TX_EMAIL_SITE` VARCHAR(80) DEFAULT NULL,
`NM_LOGRADOURO` VARCHAR(100) NOT NULL,
PRIMARY KEY (`ID_BAR`),
KEY `FK_PLANO_FINANC_BAR` (`ID_PLANO_FINANCEIRO`),
KEY `FK_UF_BAR` (`ID_UF`),
KEY `FK_BAR_USUARIO_BAR` (`ID_USUARIO`),
KEY `FK_BAIRRO_BAR` (`ID_BAIRRO`),
KEY `FK_CIDADE_BAR` (`ID_CIDADE`)
) ENGINE=MYISAM DEFAULT CHARSET=latin1;



DROP TABLE IF EXISTS `dvd`;

CREATE TABLE `dvd` (
`NM_DVD` VARCHAR(100) DEFAULT NULL,
`ID_BAR` INT(11) NOT NULL,
`DT_ULTIMA_ATUALIZACAO` DATETIME DEFAULT NULL,
`ID_GENERO_MUSICAL` INT(11) NOT NULL,
`ID_DVD` INT(11) NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`ID_DVD`),
KEY `FK_BAR_DVD` (`ID_BAR`),
KEY `FK_GENERO_DVD` (`ID_GENERO_MUSICAL`),
CONSTRAINT `FK_BAR_DVD` FOREIGN KEY (`ID_BAR`) REFERENCES `bar` (`ID_BAR`),
CONSTRAINT `FK_GENERO_DVD` FOREIGN KEY (`ID_GENERO_MUSICAL`) REFERENCES `genero_musical` (`ID_GENERO_MUSICAL`)
) ENGINE=MYISAM DEFAULT CHARSET=latin1;

DROP TABLE IF EXISTS `genero_musical`;

CREATE TABLE `genero_musical` (
`ID_GENERO_MUSICAL` INT(11) NOT NULL AUTO_INCREMENT,
`NM_GENERO_MUSICAL` VARCHAR(60) NOT NULL,
PRIMARY KEY (`ID_GENERO_MUSICAL`)
) ENGINE=MYISAM DEFAULT CHARSET=latin1;


quando eu tento fazer o join direto exemplo:
$bar ->join($dvd, 'LEFT');
$bar->get(1);

da erro

ele so funciona quando eu especifico os campos do join ex:
$bar->alias('b')
->join($dvd, 'LEFT', 'd', 'idBar','idBar')
->get(1);

eu to achando que tem algum problema na criação das entidades que nao pega esse relacionamento direto.
conforme nosso amigo descreveu na duvida dele acima o meu arquivo dvd.php nao existe nenuma "$this->_addForeignRelation("...."

Quebrei a cabeça aqui e não consegui! agora to pedindo o socorro ai.

Obrigado.
Att,
Marcus Vinicius.
0

#4 User is offline   hufersil 

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

Posted 05 October 2011 - 06:04 PM

Opa,

Foi mal pela demora.
Lumine no caso do MySQL, o tipo de tabela tem que ser InnoDB.
MyISAM não guarda relacionamentos.

@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


Similar Topics Collapse


Publicidade




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