在yii中的findall()返回数组,我希望它返回对象如何

时间:2014-01-19 13:46:49

标签: yii

我有一个名为update的函数,我想根据模块id(m_id)和key(key)更新数据库中的特定记录

这是函数

public function updateRecord($module,$key,$newData){

    $id = $this->module($module);
    $model = new Form;
    $criteria = new CDbCriteria();
    $criteria->condition = "`m_id` = 1 AND `key` = 'txt'";
    // $model = Yii::app()->db->createCommand("SELECT * FROM `tbl_setting` WHERE `m_id` = 1 AND `key` = 'txt'")->query();

    die(var_dump($model->findAll($criteria)));
    // $model = Yii::app()->db->createCommand("SELECT * FROM `tbl_setting` WHERE `m_id` = 1 AND `key` = 'txt'")->execute();



    $model->m_id = $id ;
    $model->attributes = $newData;
    $model->save();
    //die(print_r($model['m_id']));
    //if(isset($_POST['save'])){
        //$model['m_id'] = $id;

    //}
}

每次我尝试使用这个函数时,它都会给我一个错误,即$ model不是一个对象所以它无法执行

$model->m_id = $id ;

我查看了findAll()的类型,它给出了一个数组

我签出所有find()方法,只检查提供对象的findByPk()

我想根据$条件选择,我不知道该怎么做任何帮助? :)

1 个答案:

答案 0 :(得分:0)

findAll将始终返回一个数组。如果有找到记录的对象,或者没有结果的空数组。 find只返回1条记录,如果没有找到则返回NULL: http://www.yiiframework.com/doc/api/1.1/CActiveRecord#find-detail

当您这样做时,您的代码将被保存:

if(!is_null($model)) {
    $model->m_id = $id ;
    $model->attributes = $newData;
    $model->save();
} else {
    echo 'No record found';
}