doulao3905 2014-12-02 15:15
浏览 79
已采纳

Yii ActiveRecord和控制台命令无法正常工作

I have a problem with Yii + CDbCriteria / ActiveRecord when combined with Yii Console Commands

Yii version 1.1.13

The below code works when called from a controller. Because the HTTP Session is accessable.

$criteria=new CDbCriteria;
$criteria->select='first_name';
$criteria->condition='id=:contactid';
$criteria->params=array(':contactid'=>4);
$contact=Contact::model()->find($criteria); // <-- exception occurs here... strange
echo '<pre>';
var_dump($contact->first_name);
echo '</pre>';

However, when accessing via Yii Console Command I receive the following error and top 2 strack trace lines:

    exception 'CException' with message 'CConsoleApplication and its behaviors do not have a method or closure named "getSessiorks/yii/1.1.13/base/CComponent.php:265
Stack trace:
#0 /home/stm/stm_frameworks/yii/1.1.13/web/auth/CWebUser.php(193): CComponent->__call('getSession', Array)
#1 /home/stm/stm_frameworks/yii/1.1.13/web/auth/CWebUser.php(193): CConsoleApplication->getSession()

I can understand that the session is not available to console commands, but why is it even accessing the session? I'm not great with Yii framework. Is [class]::mode()->find($criteria) how I should be inflating a object using ActiveRecord? Seems to match the examples I've found online

Any help is greatly appreciated

Here is an example of the command class

<?php

class FlahCommand extends CConsoleCommand
{
    var $id;

    public function actionIndex() {
        return 0; // not implemented
    }

    public function actionBlah($contactId=0) {
        $criteria=new CDbCriteria;
        $criteria->select='first_name';
        $criteria->condition='id=:contactid';
        $criteria->params=array(':contactid'=>$contactId);
        $contact=Contact::model()->find($criteria); // <-- exception occurs here... strange
        echo '<pre>';
        var_dump($contact->first_name);
        echo '</pre>';

        return 0;

    }

}

展开全部

  • 写回答

2条回答 默认 最新

  • duancao2082 2014-12-03 14:21
    关注

    Ok I ended up figuring out that the client was including a model which i'd missed. Its solved now thanks for the insight people gave

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)
编辑
预览

报告相同问题?

手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部