[Madrid-pm] Código SQL para DBIx::Class
Diego Kuperman
diego en kuperman.com.ar
Dom Abr 18 06:13:01 PDT 2010
Hola!,
On 4/17/10 6:40 PM, JJ Merelo wrote:
> Hola,
> Quiero crear tablas innodb en DBIx::Class para poder usar claves
> externas (aunque no tengo muy claro que hagan falta). ¿Tenéis idea de
> como llamar a table para pasarle código de esto?
>
Bueno, si usas el metodo deploy() del schema para crear el sql y los
resultsources de este schema definen relaciones, el sqlt automaticamente
te creara las tablas como innodb.
Si no tienes pk's y fk's definidas en los metadatos, puedes añadirlo ya
sea tabla por tabla o para todas las tablas del schema: (aunque si no
tienes pk y fk, pues, no vale pa mucho)
# Si fuera solo en una tabla:
-----------------------------
package MySchema::Result::Yada;
# ... definición ...
sub sqlt_deploy_hook {
my ($self, $sqlt_table) = @_;
$sqlt_table->extra(
mysql_table_type => 'InnoDB',
mysql_charset => 'utf8',
);
}
# Si fuera para todas las tablas del schema:
--------------------------------------------
package MySchema;
use base 'DBIx::Class::Schema';
__PACKAGE__->load_namespaces;
sub sqlt_deploy_hook {
my ($self, $sqlt_schema) = @_;
for my $sqlt_table ( $sqlt_schema->get_tables ) {
$sqlt_table->extra(
mysql_charset => 'utf8',
mysql_table_type => 'InnoDB'
);
}
}
1;
... Pues, eso, pero como te decia, no te deberia hacer falta forzar
innodb, aunque si te recomiendo añadir el mysql_charset ;)
Un abrazo!,
Diego
Más información sobre la lista de distribución Madrid-pm