我有多个主键的表。我已经将主键功能放在我的模型中了。
class Block extends \yii\db\ActiveRecord
...
public static function primaryKey()
{
return [
'province_id',
'city_id',
'area_id',
'block_id',
];
}
这是我搜索ListView的表单
<?php echo $form->field($model, 'block_id')->dropDownList(ArrayHelper::map(Block::find()->all(), 'block_id','name'), ['prompt'=>'Choose Block'])->label(false);?>
我无法为我的搜索表单获取所有块。我应该如何更改'block_id'以获取下拉列表中的所有块?
提前致谢...
答案 0 :(得分:0)
经过几次尝试,我放弃使用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。