我有这样的表:
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
数组中的name
,PDO::FETCH_KEY_PAIR
并使用:
Developer::find()->select(['id', 'name'])->asArray()->all();
但我无法以PDO::FETCH_KEY_PAIR
格式获取数据
我怎么能这样做?
答案 0 :(得分:3)
您可以使用ArrayHelper
生成数组,key
为id
字段,value
为name
字段。使用那样:
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
。
您可以参加此课程Query
,ActiveRecord
并更改他的课程。并从新班级扩展您的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);