CakePHP Shell,如何使用控制器操作

CakePHP Shell,如何使用控制器操作,cakephp,cakephp-2.1,Cakephp,Cakephp 2.1,使用蛋糕2.1.1。我正在尝试创建一个cron作业来执行来自控制器的操作。哪种方法是正确的?我有一个名为admin_test的操作的OffersController。我希望每2小时运行一次此操作。目前,我在app/Console/command/SyncapiShell.php中创建了一个shell: class SyncapiShell extends AppShell { public $uses = array('Offer'); public function main

使用蛋糕2.1.1。我正在尝试创建一个cron作业来执行来自控制器的操作。哪种方法是正确的?我有一个名为admin_test的操作的OffersController。我希望每2小时运行一次此操作。目前,我在app/Console/command/SyncapiShell.php中创建了一个shell:

class SyncapiShell extends AppShell {
    public $uses = array('Offer');

    public function main() {
       $this->Offer->admin_test();
    }
}
但是我在尝试执行shell时遇到了一个SQLSTATE[42000]语法错误或访问冲突。 我还使用了管理路由、身份验证组件和ACL。外壳是如何工作的?它会忽略身份验证和acl权限吗?通常,管理员测试操作只能由经过身份验证的特定用户访问


谢谢你

不,这不是正确的方法,但更可能是一个强有力的指标,表明你的应用程序架构不好。你应该有肥胖的模型和微型控制器

Shell:uses将像控制器和负载模型的uses属性一样工作。在控制器中,您应该使用模型关联,而不是使用关联加载数千个模型

重构控制器方法并将代码移动到报价模型中


为什么shell需要身份验证或管理路由?正如名字所说,shell是一个shell程序,而不是一个网站。身份验证基本上由操作系统和运行脚本的用户完成。只有能够访问shell的人才能运行它。

不,这不是正确的方式,但更可能是一个强烈的迹象,表明您的应用程序架构不好。你应该有肥胖的模型和微型控制器

Shell:uses将像控制器和负载模型的uses属性一样工作。在控制器中,您应该使用模型关联,而不是使用关联加载数千个模型

重构控制器方法并将代码移动到报价模型中


为什么shell需要身份验证或管理路由?正如名字所说,shell是一个shell程序,而不是一个网站。身份验证基本上由操作系统和运行脚本的用户完成。只有能够接触到外壳的人才能运行它。

直到现在,我似乎还生活在另一个星球上。非常感谢。我一直认为模特应该很瘦。我总是倾向于创建函数并重用它们,但现在我不得不回顾我所有的结构。但是关于使用问题,我在cakephp网站上说过,如果在一个shell中你想使用其他rmodel,你必须使用“uses”,这对shell来说是正确的。但是,在控制器中,您不希望通过uses属性添加大量模型来造成非必需的开销,但很多人这样做是出于某种原因。是的,事实上,我从未在控制器中使用过uses。再次感谢,我已经用新的逻辑重新考虑了几个模型。你的贡献很有帮助。现在一切都变得更有意义了。似乎直到现在我还生活在另一个星球上。非常感谢。我一直认为模特应该很瘦。我总是倾向于创建函数并重用它们,但现在我不得不回顾我所有的结构。但是关于使用问题,我在cakephp网站上说过,如果在一个shell中你想使用其他rmodel,你必须使用“uses”,这对shell来说是正确的。但是,在控制器中,您不希望通过uses属性添加大量模型来造成非必需的开销,但很多人这样做是出于某种原因。是的,事实上,我从未在控制器中使用过uses。再次感谢,我已经用新的逻辑重新考虑了几个模型。你的贡献很有帮助。现在一切都变得更有意义了。