Yii2:缓存活动记录关系

时间:2018-03-20 15:45:18

标签: php caching yii2 yii2-advanced-app

我正在尝试从关系函数本身缓存关系模型。我想知道这是否是最佳做法:

public function getProgram()
    {
        return $this->hasOne(Program::className(), ['id' => 'program_id'])->cache(5);
    }

问题是它似乎可以在我的本地机器上工作,它有php 7.1,但是在生产上出错,它有php 5.6。错误是:

消息:

yii\base\InvalidParamException: common\models\MyEvent has no relation named "program".

跟踪:

yii\base\UnknownMethodException: Calling unknown method: yii\db\ActiveQuery::cache()
  File "/var/www/my-application/vendor/yiisoft/yii2/base/Component.php", line 294, in __call
  File "/var/www/my-application/common/models/MyEvent.php", line 648, in cache
  File "/var/www/my-application/common/models/MyEvent.php", line 648, in getProgram
  File "/var/www/my-application/vendor/yiisoft/yii2/db/BaseActiveRecord.php", line 1211, in getRelation
  File "/var/www/my-application/vendor/yiisoft/yii2/db/ActiveQueryTrait.php", line 200, in normalizeRelations
  File "/var/www/my-application/vendor/yiisoft/yii2/db/ActiveQueryTrait.php", line 167, in findWith
  File "/var/www/my-application/vendor/yiisoft/yii2/db/ActiveQuery.php", line 212, in populate
  File "/var/www/my-application/vendor/yiisoft/yii2/db/Query.php", line 218, in all
  File "/var/www/my-application/vendor/yiisoft/yii2/db/ActiveQuery.php", line 133, in all
  File "/var/www/my-application/vendor/yiisoft/yii2/data/ActiveDataProvider.php", line 116, in prepareModels
  File "/var/www/my-application/vendor/yiisoft/yii2/data/BaseDataProvider.php", line 101, in prepare
  File "/var/www/my-application/vendor/yiisoft/yii2/data/BaseDataProvider.php", line 114, in getModels
  File "/var/www/my-application/frontend/controllers/SiteController.php", line 224, in actionHomeApi
  File "<internal>", line unknown, in call_user_func_array
  File "/var/www/my-application/vendor/yiisoft/yii2/base/InlineAction.php", line 57, in runWithParams
  File "/var/www/my-application/vendor/yiisoft/yii2/base/Controller.php", line 157, in runAction
  File "/var/www/my-application/vendor/yiisoft/yii2/base/Module.php", line 528, in runAction
  File "/var/www/my-application/vendor/yiisoft/yii2/web/Application.php", line 103, in handleRequest
  File "/var/www/my-application/vendor/yiisoft/yii2/base/Application.php", line 386, in run
  File "/var/www/my-application/frontend/web/index.php", line 19, in <main>
yii\base\InvalidParamException: common\models\MyEvent has no relation named "program".
  File "/var/www/my-application/vendor/yiisoft/yii2/db/BaseActiveRecord.php", line 1214, in getRelation
  File "/var/www/my-application/vendor/yiisoft/yii2/db/ActiveQueryTrait.php", line 200, in normalizeRelations
  File "/var/www/my-application/vendor/yiisoft/yii2/db/ActiveQueryTrait.php", line 167, in findWith
  File "/var/www/my-application/vendor/yiisoft/yii2/db/ActiveQuery.php", line 212, in populate
  File "/var/www/my-application/vendor/yiisoft/yii2/db/Query.php", line 218, in all
  File "/var/www/my-application/vendor/yiisoft/yii2/db/ActiveQuery.php", line 133, in all
  File "/var/www/my-application/vendor/yiisoft/yii2/data/ActiveDataProvider.php", line 116, in prepareModels
  File "/var/www/my-application/vendor/yiisoft/yii2/data/BaseDataProvider.php", line 101, in prepare
  File "/var/www/my-application/vendor/yiisoft/yii2/data/BaseDataProvider.php", line 114, in getModels
  File "/var/www/my-application/frontend/controllers/SiteController.php", line 224, in actionHomeApi
  File "<internal>", line unknown, in call_user_func_array
  File "/var/www/my-application/vendor/yiisoft/yii2/base/InlineAction.php", line 57, in runWithParams
  File "/var/www/my-application/vendor/yiisoft/yii2/base/Controller.php", line 157, in runAction
  File "/var/www/my-application/vendor/yiisoft/yii2/base/Module.php", line 528, in runAction
  File "/var/www/my-application/vendor/yiisoft/yii2/web/Application.php", line 103, in handleRequest
  File "/var/www/my-application/vendor/yiisoft/yii2/base/Application.php", line 386, in run
  File "/var/www/my-application/frontend/web/index.php", line 19, in <main>

0 个答案:

没有答案