Browse Source

Merge branch 'master' of github.com:yiisoft/yii2

tags/2.0.0-beta
Qiang Xue 12 years ago
parent
commit
ec8de6088c
  1. 24
      framework/yii/bootstrap/Nav.php
  2. 18
      framework/yii/db/pgsql/Schema.php

24
framework/yii/bootstrap/Nav.php

@ -27,13 +27,19 @@ use yii\helpers\Html;
* ), * ),
* array( * array(
* 'label' => 'Dropdown', * 'label' => 'Dropdown',
* 'dropdown' => array( * 'items' => array(
* array( * array(
* 'label' => 'DropdownA', * 'label' => 'Level 1 -DropdownA',
* 'url' => '#', * 'url' => '#',
* 'items' => array(
* array(
* 'label' => 'Level 2 -DropdownA',
* 'url' => '#',
* ),
* ),
* ), * ),
* array( * array(
* 'label' => 'DropdownB', * 'label' => 'Level 1 -DropdownB',
* 'url' => '#', * 'url' => '#',
* ), * ),
* ), * ),
@ -114,7 +120,7 @@ class Nav extends Widget
} }
$label = $this->encodeLabels ? Html::encode($item['label']) : $item['label']; $label = $this->encodeLabels ? Html::encode($item['label']) : $item['label'];
$options = ArrayHelper::getValue($item, 'options', array()); $options = ArrayHelper::getValue($item, 'options', array());
$dropdown = ArrayHelper::getValue($item, 'dropdown'); $items = ArrayHelper::getValue($item, 'items');
$url = Html::url(ArrayHelper::getValue($item, 'url', '#')); $url = Html::url(ArrayHelper::getValue($item, 'url', '#'));
$linkOptions = ArrayHelper::getValue($item, 'linkOptions', array()); $linkOptions = ArrayHelper::getValue($item, 'linkOptions', array());
@ -122,19 +128,19 @@ class Nav extends Widget
$this->addCssClass($options, 'active'); $this->addCssClass($options, 'active');
} }
if ($dropdown !== null) { if ($items !== null) {
$linkOptions['data-toggle'] = 'dropdown'; $linkOptions['data-toggle'] = 'dropdown';
$this->addCssClass($options, 'dropdown'); $this->addCssClass($options, 'dropdown');
$this->addCssClass($urlOptions, 'dropdown-toggle'); $this->addCssClass($urlOptions, 'dropdown-toggle');
$label .= ' ' . Html::tag('b', '', array('class' => 'caret')); $label .= ' ' . Html::tag('b', '', array('class' => 'caret'));
if (is_array($dropdown)) { if (is_array($items)) {
$dropdown = Dropdown::widget(array( $items = Dropdown::widget(array(
'items' => $dropdown, 'items' => $items,
'clientOptions' => false, 'clientOptions' => false,
)); ));
} }
} }
return Html::tag('li', Html::a($label, $url, $linkOptions) . $dropdown, $options); return Html::tag('li', Html::a($label, $url, $linkOptions) . $items, $options);
} }
} }

18
framework/yii/db/pgsql/Schema.php

@ -73,7 +73,7 @@ class Schema extends \yii\db\Schema
); );
/** /**
* Creates a query builder for the MySQL database. * Creates a query builder for the PostgreSQL database.
* @return QueryBuilder query builder instance * @return QueryBuilder query builder instance
*/ */
public function createQueryBuilder() public function createQueryBuilder()
@ -143,14 +143,9 @@ class Schema extends \yii\db\Schema
$sql = <<<SQL $sql = <<<SQL
select select
ct.conname as containst,
c.relname as table_name,
ns.nspname as table_schema,
current_database() as table_catalog,
(select string_agg(attname,',') attname from pg_attribute where attrelid=ct.conrelid and attnum = any(ct.conkey)) as columns, (select string_agg(attname,',') attname from pg_attribute where attrelid=ct.conrelid and attnum = any(ct.conkey)) as columns,
fc.relname as foreign_table_name, fc.relname as foreign_table_name,
fns.nspname as foreign_table_schema, fns.nspname as foreign_table_schema,
current_database() as foreign_table_catalog,
(select string_agg(attname,',') attname from pg_attribute where attrelid=ct.confrelid and attnum = any(ct.confkey)) as foreign_columns (select string_agg(attname,',') attname from pg_attribute where attrelid=ct.confrelid and attnum = any(ct.confkey)) as foreign_columns
from from
pg_constraint ct pg_constraint ct
@ -169,7 +164,12 @@ SQL;
foreach ($constraints as $constraint) { foreach ($constraints as $constraint) {
$columns = explode(',', $constraint['columns']); $columns = explode(',', $constraint['columns']);
$fcolumns = explode(',', $constraint['foreign_columns']); $fcolumns = explode(',', $constraint['foreign_columns']);
$citem = array($constraint['foreign_table_name']); if ($constraint['foreign_table_schema'] !== $this->defaultSchema) {
$foreignTable = $constraint['foreign_table_schema'] . '.' . $constraint['foreign_table_name'];
} else {
$foreignTable = $constraint['foreign_table_name'];
}
$citem = array($foreignTable);
foreach ($columns as $idx => $column) { foreach ($columns as $idx => $column) {
$citem[] = array($fcolumns[$idx] => $column); $citem[] = array($fcolumns[$idx] => $column);
} }
@ -243,10 +243,6 @@ ORDER BY
SQL; SQL;
$columns = $this->db->createCommand($sql)->queryAll(); $columns = $this->db->createCommand($sql)->queryAll();
if (empty($columns)) {
return false;
}
foreach ($columns as $column) { foreach ($columns as $column) {
$column = $this->loadColumnSchema($column); $column = $this->loadColumnSchema($column);
$table->columns[$column->name] = $column; $table->columns[$column->name] = $column;

Loading…
Cancel
Save