我有问题的Yii + CDbCriteria/ActiveRecord的当Yii的控制台命令Yii的ActiveRecord的和控制台命令不工作
Yii的版本1.1.13
从控制器调用时下面的代码工作相结合。因为HTTP会话是可访问的。
$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>';
然而,通过Yii控制台命令访问时,我收到以下错误和顶部2 STRACK迹线:
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()
我可以理解,本次会议不提供给控制台命令,但为什么它甚至访问会话? Yii框架并不好。是[class] :: mode() - > find($ criteria)我应该如何使用ActiveRecord来扩充对象?似乎很相称的例子,我在网上找到
任何帮助是极大的赞赏
这是命令类的例子
<?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;
}
}
你确定这是你的consoleCommand类中的所有代码吗? – 2014-12-02 23:34:16
我没有列出任何代码,我只是列出了一个片断,我知道它在$ contact = Contact :: model() - > find($ criteria)上崩溃;行 – wired00 2014-12-02 23:44:03
@AliMasudianPour我已经用示例命令类修正了这个问题。 – wired00 2014-12-02 23:48:13