/** * Gets foreign key parameters * @param string $table The table name as input parameter * @param type $field The field name as input parameter * @param type $constraintName The constraint name as output parameter * @param type $refTable The reference table name as output parameter * @param string $refField The reference table field name as output parameter * @return boolean Returns true if foreign key infos where found */ private function GetForeignKey($table, $field, &$constraintName, &$refTable, &$refField) { $sql = new Sql\Builder($this); $tbl = $sql->Table('information_schema.key_column_usage', array('TABLE_SCHEMA', 'TABLE_NAME', 'COLUMN_NAME', 'CONSTRAINT_NAME', 'REFERENCED_TABLE_NAME', 'REFERENCED_COLUMN_NAME')); $cond = $sql->Equals($tbl->Field('TABLE_SCHEMA'), $sql->Value($this->dbName))->And_($sql->Equals($tbl->Field('TABLE_NAME'), $sql->Value($table)))->And_($sql->Equals($tbl->Field('COLUMN_NAME'), $sql->Value($field)))->And_($sql->IsNotNull($tbl->Field('REFERENCED_TABLE_NAME'))); $what = $sql->SelectList($tbl->Field('REFERENCED_TABLE_NAME')); $what->Add($tbl->Field('REFERENCED_COLUMN_NAME')); $what->Add($tbl->Field('CONSTRAINT_NAME')); $select = $sql->Select(true, $what, $tbl, $cond); $reader = $this->ExecuteQuery((string) $select); if ($reader->Read()) { $constraintName = (string) $reader->ByName('CONSTRAINT_NAME'); $refTable = (string) $reader->ByName('REFERENCED_TABLE_NAME'); $refField = (string) $reader->ByName('REFERENCED_COLUMN_NAME'); return true; } return false; }