yii2.0模型里,如何将查询的所有对象转为数组?

    public function getData(){

    $cates=Cats::find()->asarray()->all();
     
      return $cates;
    }
    

上面那是模型里的代码.

$catsModel=Cats::model();
$cates=$catsModel->getData();

这是控制器调用时写的,现在问题是,我打印那个$cates会报错
Non-static method CActiveRecord::find() should not be called statically

或者说asarray()未定义,我在模型上面该use哪些东西呢?是不是因为我模型上面一个没use才报错,直接是

class Cats extends CActiveRecord{
    public static function model($className= __CLASS__){
        return parent::model($className);
    }

求助高人,请教我如何能在控制器里调那个getData取cats表时能调用数组出来而不是对象,我该添加哪些东西才不报错,谢谢指教。

阅读 6.9k
5 个回答

我说下我目前发现的问题:
1.问题说的是yii2,代码中出现CActiveRecord,这个类是yii1才有的
2.model中的public static function model($className= __CLASS__)这个方法在yii2yiidbActiveRecord中也没有
3.PHP报错

Non-static method CActiveRecord::find() should not be called statically

字面意思:CActiveRecord::find()不是静态方法,但是题主使用的是静态调用方式

综上所述,题主的问题定位不清,无法作答。

控制器里调用请:

$catModel = new Cats();
$cates = $catModel->getData();

另外,你这里的

class Cats extends CActiveRecord{
    public static function model($className= __CLASS__){
        return parent::model($className);
    }

应该改成:

class Cats extends \yii\db\CActiveRecord{
    public static function model($className= __CLASS__){
        return parent::model($className);
    }

或者先

use \yii\db\ActiveRecord;

图片描述

图片描述

他依然找不到那个asArray,是不是这个结构目录错了,老兄,我改了好几次目录依然不行,实在抱歉麻烦你了kumfo

···php

//我来指导你
->asArray()

···

先弄清楚你的项目用的是Yii1的框架还是2的框架,找对应的手册看看。另外尽量不要在控制器里直接调model取数据,保持结构清晰。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题