PHP에 MySQL 테이블 관계를 덤프하는 방법
문제
나는 많은 것을 검색했지만 PHP에서 일대일, 일대일 대와 같은 테이블 관계를 덤프하는 방법을 찾을 수 없었습니다.
PHP 에서이 문제를 처리 할 수있는 방법이 있습니까?
결과는 다음과 같습니다.
array(
'tableA' => array(
'one-to-one' => array('tableB', 'tableC'),
'one-to-many' => array('tableD'),
'tableB' => array(
'one-to-one' => array('tableA')
...
)
모든 제안은 대단히 감사합니다.
해결책
설명 명령의 출력을 구문 분석하여 직접 수행해야합니다. orm 좋아요를 고려할 수 있습니다 교의. 당신은 교리에게 일대일 관계를 만들라고 말합니다. 표 A와 표 B에서 나머지를 처리합니다.
다른 팁
나는 대본을 찾았다 http://dev.mysql.com/doc/refman/en/show-table-status.html Regex가있는 구문 분석 테이블 정보를 설명합니다. 나는 코드를 조작했다. 코드는 다음과 같습니다.
<?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
}
?>
제휴하지 않습니다 StackOverflow