code: protected function findForeignKeys($table)
      {
          $object = $table->name;
          if ($table->schemaName !== null) {
              $object = $table->schemaName . '.' . $object;
          }
          if ($table->catalogName !== null) {
              $object = $table->catalogName . '.' . $object;
          }
  
          // please refer to the following page for more details:
          // http://msdn2.microsoft.com/en-us/library/aa175805(SQL.80).aspx
          $sql = <<<'SQL'
  SELECT
  	[fk].[name] AS [fk_name],
  	[cp].[name] AS [fk_column_name],
  	OBJECT_NAME([fk].[referenced_object_id]) AS [uq_table_name],
  	[cr].[name] AS [uq_column_name]
  FROM
  	[sys].[foreign_keys] AS [fk]
  	INNER JOIN [sys].[foreign_key_columns] AS [fkc] ON
  		[fk].[object_id] = [fkc].[constraint_object_id]
  	INNER JOIN [sys].[columns] AS [cp] ON
  		[fk].[parent_object_id] = [cp].[object_id] AND
  		[fkc].[parent_column_id] = [cp].[column_id]
  	INNER JOIN [sys].[columns] AS [cr] ON
  		[fk].[referenced_object_id] = [cr].[object_id] AND
  		[fkc].[referenced_column_id] = [cr].[column_id]
  WHERE
  	[fk].[parent_object_id] = OBJECT_ID(:object)
  SQL;
  
          $rows = $this->db->createCommand($sql, [
              ':object' => $object,
          ])->queryAll();
  
          $table->foreignKeys = [];
          foreach ($rows as $row) {
              $table->foreignKeys[$row['fk_name']] = [$row['uq_table_name'], $row['fk_column_name'] => $row['uq_column_name']];
          }
      }
docs: Collects the foreign key column details for the given table.
  @param TableSchema $table the table metadata