【问题标题】:yii2 - fetch data with activerecord in FETCH_KEY_PAIR array formatyii2 - 使用 FETCH_KEY_PAIR 数组格式的 activerecord 获取数据
【发布时间】:2015-04-11 13:44:55
【问题描述】:

我有这样的表:

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 格式的数据
我该怎么做?

【问题讨论】:

    标签: activerecord yii2


    【解决方案1】:

    您可以使用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

    你可以参加这个课程Query, ActiveRecord 并改变他的。并从新类扩展您的 Develop 模型。

    【讨论】:

    • 我知道这不是解决方案,也许 yii2 有另一个选项来选择获取方法。
    【解决方案2】:

    在控制器中添加代码

    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);
    

    【讨论】:

      猜你喜欢
      • 2015-09-16
      • 1970-01-01
      • 2020-05-17
      • 1970-01-01
      • 1970-01-01
      • 2014-05-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多