2016-06-16 18 views
0

I複数の主キーを持つテーブルがあります。私はすでにこのように私のモデルに主キー機能を入れました。YII2:複数の主キーを持つドロップダウンリスト

class Block extends \yii\db\ActiveRecord 
... 
public static function primaryKey() 
{ 
    return [ 
    'province_id', 
    'city_id', 
    'area_id', 
    'block_id', 
    ]; 
} 

これは私が私の検索フォームのすべてのブロックを取得することはできませんリストビュー

<?php echo $form->field($model, 'block_id')->dropDownList(ArrayHelper::map(Block::find()->all(), 'block_id','name'), ['prompt'=>'Choose Block'])->label(false);?> 

の検索のための私のフォームです。ドロップダウンリスト内のすべてのブロックを取得するには、どのように 'block_id'を変更する必要がありますか?事前に

おかげで...

+0

'Block :: find() - > all()'はおそらく 'asArray()'を使用していますか? – ineersa

+0

すでにActiveRecordを使用しています。 asArrayはすべての行を与えませんでした。 – hoAAah

答えて

0

は、tryのカップルの後、私は使用ActiveRecordのをあきらめ、代わりにSQLクエリを使用します。

私の検索リストビューのコードは、このようになります。

use yii\db\Query; 
..... 
$connection = \Yii::$app->db; 
$sql = $connection ->createCommand('SELECT CONCAT(province_id,".",city_id,".",area_id,".",block_id) AS block_full, name FROM block'); 
$query = $sql->queryAll(); 
echo $form->field($model, 'block_id')->dropDownList(ArrayHelper::map($query, 'block_full','name'), ['prompt'=>'Choose Block'])->label(false); 

私はCONCATを使用してモデルでフィルタを作成しやすくしました。 block_fullを分解して各主キーの正しいIDを取得します。

関連する問題