Pergunta

Eu procurei muito, mas não consegui encontrar uma maneira de despejar as relações da tabela, como um, um para muitos vs no PHP.

Existe uma maneira de lidar com esse problema no PHP?

Um resultado pode ser:

array(
   'tableA' => array(
                'one-to-one' => array('tableB', 'tableC'),
                'one-to-many' => array('tableD'),

   'tableB' => array(
                'one-to-one' => array('tableA')


    ...        
)

Quaisquer sugestões são muito apreciadas.

Foi útil?

Solução

Você precisa fazer isso sozinho analisando a saída do comando descreve. Você pode considerar usar um orm como doutrina. Você diz à doutrina para fazer uma relação única na Tabela A e Tabela B e lida com o resto.

Outras dicas

Eu encontrei um script em http://dev.mysql.com/doc/refman/5.0/en/show-table-status.html que descreve as informações da tabela de análise com regex. Eu tinha manipulado o código para funcionar. Aqui está o código.

<?php
$conn = mysql_connect('localhost', 'user', 'pass');
if (!$conn) {
    die('Could not connect: ' . mysql_error());
}

//DB connection already established
mysql_query("use db");
$res = mysql_query("SHOW CREATE TABLE tbl");
$row = mysql_fetch_assoc($res);
mysql_free_result($res);

//Only work on InnoDB foreign key info.
if(preg_match_all(
         '/FOREIGN KEY \(`(.*)`\) REFERENCES `(.*)` \(`(.*)`\)/',
         $row['Create Table'],
         $matchArr)) {
    print_r($matchArr); //which writes down the result

}


?> 
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top