سؤال

لقد بحثت كثيرًا ، لكنني لم أتمكن من العثور على طريقة لتفريغ علاقات الجدول مثل فرد إلى واحد ، فرديًا مقابل PHP.

هل هناك طريقة للتعامل مع هذه المشكلة في PHP؟

قد تكون النتيجة:

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

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


    ...        
)

أي اقتراحات هي مرحب بها.

هل كانت مفيدة؟

المحلول

عليك أن تفعل ذلك بنفسك عن طريق تحليل إخراج الأمر الوصف. قد تفكر في استخدام ORM مثل عقيدة. أنت تخبر العقيدة أن تجعل علاقة واحدة إلى واحدة في الجدول أ والجدول ب ويتعامل مع الباقي.

نصائح أخرى

لقد وجدت نصًا في http://dev.mysql.com/doc/refman/5.0/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

}


?> 
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top