yii2-以fetch\ U KEY\ U PAIR数组格式使用activerecord获取数据

yii2-以fetch\ U KEY\ U PAIR数组格式使用activerecord获取数据,activerecord,yii2,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_

我有这样的桌子:

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;
我只想在
PDO::FETCH_KEY_PAIR
数组中获取
id
name
,并使用:

Developer::find()->select(['id', 'name'])->asArray()->all();
但是我无法以
PDO::FETCH_KEY_PAIR
格式获取数据

如何操作?

您可以使用
ArrayHelper
生成带有
键的数组
id
字段,而
值是
名称
字段。这样使用:

ArrayHelper::map(Developer::find()->select(['id', 'name'])->asArray()->all(), 'id', 'name')
$res = Yii::$app->db->createCommand('SELECT id, name FROM developer')->queryAll(PDO::FETCH_KEY_PAIR);
更多

编辑: 您可以使用
createCommand
,如下所示:

ArrayHelper::map(Developer::find()->select(['id', 'name'])->asArray()->all(), 'id', 'name')
$res = Yii::$app->db->createCommand('SELECT id, name FROM developer')->queryAll(PDO::FETCH_KEY_PAIR);
但如果要使用
ActiveRecord
请参见中的 在此行中,未设置
fetchMode


您可以选择这个类
Query
ActiveRecord
,并更改他的。并从新类扩展您的
开发
模型。

在控制器中添加代码

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';
打印($contactdata);

我知道这一点,但这不是解决方案,也许yii2有另一个选择来选择fetch方法。