CakePHP控制器方法没有写入DB

时间:2013-03-11 14:17:09

标签: php cakephp cakephp-appmodel

我从另一个控制器的方法调用一个控制器方法。我可以确认正在调用该方法,因为当我对传递的数据执行print_r时,我会看到我期望的一切。我的问题是,当我调用$ this-> Log-> save($ this-> data)时,不会向DB写入任何内容。我是一名.NET开发人员,因此我对cakePHP知之甚少,但我知道这是人们应该将数据保存到数据库的方式,因此我非常难过。

<?php
//The calling controller
App::import('Controller', 'Logs');
class othAuthComponent extends Object //I noticed this inherits from Object, 
                                      //but it doesn't seem to be a problem
{
    function SomeFunction()
    {
        //create instance of our Logs controller as per example
        $Logger = new LogsController;
        $Logger->constructClasses();
        $Logger->cms_addlog($user['User']['name'].' Logged in', $user['User']['id']);
    }
}
?>

罪犯:

<?php
//the called controller
class LogsController extends AppController 
{
    function cms_addlog($note,$ba_id)
    {

        $this->Log->create();
        $curDateTime = getdate();

        $this->data['LogTime'] = $curDateTime;
        $this->data['Note'] = $note;
        $this->data['brandactivatorid'] = $ba_id;
        //print_r($this->data);
            //die();
        $this->Log->save($this->data);
    }
}
?>

2 个答案:

答案 0 :(得分:2)

执行此操作的正确方法是使cms_addlog函数成为Log模型的一部分。

然后致电

$this->Log->cms_addlog($user['User']['name'].' Logged in', $user['User']['id']);

答案 1 :(得分:1)

您不应该从代码中的任何位置调用Controller操作/方法。控制器操作可以直接从浏览器访问。

干净的方法是在模型中实现addLog方法,并从控制器或组件中调用该方法。

请阅读http://book.cakephp.org/2.0/en/getting-started/cakephp-structure.htmlhttp://book.cakephp.org/2.0/en/cakephp-overview/understanding-model-view-controller.html以获取进一步的参考。