2016-09-01 19 views
0

がときYii2は、SQLコマンドから列名を取得:次のコードを取得した場合、結果が== nullの

$DBConnection = 
    CreateNewDBConnection(Yii::$app->get('db_cdh'),$aDatabaseName); 
    $DBConnection->open(); 
    $command = $DBConnection->createCommand($aQuery); 
    $queryres = $command->queryAll(); 

をクエリから結果があれば、私はこの

Array 
(
    [0] => Array 
    (
     [name] => 2.6.084.545 
     [xdim+2] => 70 
    ) 

[1] => Array 
    (
     [name] => 2.5.102.030 
     [xdim+2] => 60 
    ) 

[2] => Array 
    (
     [name] => 2.5.141.560 
     [xdim+2] => 80 
    ) 

) 
のように、配列を取得

しかし、クエリの結果が空の場合、私は空の配列を取得します。 どのようにして列名を取得できますか?

私はこれを尋ねているのは、複数のDBにクエリを依頼していて、結果の一部(1行以上)がありません。システムはほとんど機能しますが、グリッドビューは最初の行だけを解析して表示する列を見つけます。したがって、複数のDBにわたる順序結果に応じて、最初に何が来るかに応じて、グリッド表示は列を表示するかどうかを決定します。

何か助けてください。

答えて

0

あなたはyii\db\TableSchemaを使用して列名を取り、その後、それらを使用することができます。

$columns = []; 
if (empty($queryres)) { 
    $columns = $DBConnection->getTableSchema('your_table_name')->getColumnNames(); 
} 
+0

私はそれは、ユーザが編集し、複雑なクエリですが、どちらかのテーブルを知りません。 – Ydakilux

+0

最初のクエリの結果が空の場合、LIMIT 1のWHERE文を使わずに同じクエリを実行し、そこから列名を取得できます。 –

関連する問題