Ola pessoal.
Gostaria de saber porque gera erro:
Table "{$table->name}" has a composite primary key which is not supported by crud generator.
Agradeço
Ola pessoal.
Gostaria de saber porque gera erro:
Table "{$table->name}" has a composite primary key which is not supported by crud generator.
Agradeço
Pelo erro, o gerador de crud não suporta fazer um crud onde o modelo tem mais de um campo como chave primária.
Pelo jeito , vai ter que fazer na mão, ou, se tiver muita coisa pra gerar, criar seus templates.
É como o Daniel falou, é um erro na criação de um crud com mais de uma chave mesmo, já aconteceu comigo também e tive que fazer na mão mesmo.
E como eu faria isso?
Como eu alteraria no template do crud.
É que estou desenvolvendo uma sistema loja virtual, sei que com chave estrangeira as consulta se torna mais confiaveis.
Antigamente eu so referenciava o campo via FK e nunca tive este tipo de problema. Ahi no crud gerava as relaçoes sem problemas.
Pois sempre tive duvidas sobre chave estrageiras. Utilizo o Workbench para cria o banco e lá tem dois tipo de relaçao identificada e a nao identificada.
Alguem poderia me dizer se teria algum problema a nao indenficada.
Valew desde já…
Olha amigo a um tempo atrás fiz uma tabela com duas chaves extrangeiras que era assim:
Então nos relacionamentos dos models fiz assim:
models/perfil
public function relations() {
return array(
'permissaos' => array(self::MANY_MANY, 'Permissao', 'permissao_perfil(perfil, permissao)'),
);
}
models/permissao
public function relations() {
return array(
'perfils' => array(self::MANY_MANY, 'Perfil', 'permissao_perfil(perfil, permissao)'),
);
}
Pra inserir usei comando SQL mesmo
public function addPermissao_Perfil($modulo, $acao) {
if (isset($modulo) && isset($acao)) {
$permissao = Permissao::model()->findByAttributes(array('modulo' => $modulo, 'acao' => $acao));
if ($permissao != null) {
$sql = 'INSERT INTO permissao_perfil(perfil,permissao) VALUES (:perfil,:permissao);';
$command = Yii::app()->db->createCommand($sql);
$command->prepare();
$rowsAffected = $command->execute(array(':perfil' => $this->tpus_id, ':permissao' => $permissao->idpermissao));
return $rowsAffected == 1;
}
}
return false;
}
Não sei se vai te ajudar mais comigo funcionou perfeito, claro pra o meu caso.
ë pelo visto trabalhar com chave estranjeira é muito complicado…mais valew pelo conhecimento
Só um ponto.
No MySQL qnd se usa InnoDB e vc cria as constraints ao gerar o Model ele já faz esse trabalho do relations.
Correto amigo Cálcio, mais quando você tentar gerar o crud com alguma tabela que tenha duas ou mais chave estrangeiras, ai acontece o erro.