我正在尝试从关系函数本身缓存关系模型。我想知道这是否是最佳做法:
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>