php - yii2.0模型里,如何将查询的所有对象转为数组?
阿神
阿神 2017-04-11 09:43:28
0
5
399
    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表时能调用数组出来而不是对象,我该添加哪些东西才不报错,谢谢指教。

阿神
阿神

闭关修行中......

全部回复(5)
PHPzhong

我说下我目前发现的问题:
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;
PHPzhong

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

左手右手慢动作

···php

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

···

黄舟

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

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板