yii2 - 使用FETCH_KEY_PAIR数组格式的activerecord获取数据

时间:2015-04-11 13:44:56

标签: activerecord yii2

我有这样的表:

CREATE TABLE `developer` (
  `id` bigint(20) AUTO_INCREMENT,
  `name` varchar(1024) NOT NULL,
  `link` varchar(1024) NOT NULL,
  `parent` bigint(20) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `parent` (`parent`),
  CONSTRAINT `developer_ibfk_1` FOREIGN KEY (`parent`) REFERENCES `developer` (`id`) ON DELETE SET NULL ON UPDATE CASCADE
) ENGINE=InnoDB CHARSET=utf8 COLLATE=utf8_unicode_ci;

我想从此表中只获取id数组中的namePDO::FETCH_KEY_PAIR并使用:

Developer::find()->select(['id', 'name'])->asArray()->all();

但我无法以PDO::FETCH_KEY_PAIR格式获取数据 我怎么能这样做?

2 个答案:

答案 0 :(得分:3)

您可以使用ArrayHelper生成数组,keyid字段,valuename字段。使用那样:

ArrayHelper::map(Developer::find()->select(['id', 'name'])->asArray()->all(), 'id', 'name')

了解更多http://www.yiiframework.com/doc-2.0/guide-helper-array.html#building-maps

编辑: 您可以使用createCommand,例如:

$res = Yii::$app->db->createCommand('SELECT id, name FROM developer')->queryAll(PDO::FETCH_KEY_PAIR);

但如果您想使用ActiveRecord,请参阅https://github.com/yiisoft/yii2/blob/master/framework/db/Query.php#L204 在此行中未设置fetchMode

您可以参加此课程QueryActiveRecord并更改他的课程。并从新班级扩展您的Develop模型。

答案 1 :(得分:1)

在控制器中添加代码

public function actionViewdata() {
    $model = new Contact();
    $data = $model::find()
            // ->where(['id' > 0])
            //->orderBy('age')
            ->all();
    return $this->render('viewdata', array(
                'model' => $model,
                'contactdata' => $data,
    ));
}

现在在视图中(viewdata.php)

echo'<pre>';
print_r($contactdata);