Kohana模型保存两次

时间:2012-07-22 06:23:08

标签: php controller action kohana-3.2

我刚安装了Kohana 3.2的新副本,构建了我的数据库,编写了我的第一个模型,并尝试对其进行测试。一切正常,除了模型的“保存”方法正在执行两次 - 我最终在数据库中有两个新条目而不是一个。只有当我使用下面显示的“查找”代码时才会出现此问题。

为什么模型的保存会被执行两次,一次是按预期执行,一次是因为查找?

以下是代码:

class Controller_Welcome extends Controller {

public function action_index()
{

    $rating = ORM::factory('rating');

    $rating->user_id = 1;
    $rating->userlevel_id = 3;
    $rating->category_id = 1;
    $rating->page_id = 1;
    $rating->rating = 4;
    $rating->comments = 'This one is a real killer';
    $rating->ratingstatus_id = 1;

    $rating->save();

    $found = ORM::factory('rating')
        ->where('id', '=', 1)
        ->find();

    $this->response->body($found->comments); // Test to check for found data
}

} // End Welcome

提前致谢!

2 个答案:

答案 0 :(得分:1)

导致我的问题有两个问题:

  1. 我的服务器上没有favicon.ico。许多浏览器请求一个,并且所有非实际文件或目录的URL都被重定向到索引页面。每次我加载页面时,浏览器都会请求丢失的favicon并重定向到我的索引页面 - 两个请求。查看我的日志后,这个页面让我感到惊讶:http://forum.kohanaframework.org/discussion/7447/error-kohana_request_exception/p1

  2. 我添加了一个favicon后,我偶尔也会看到双重请求行为。事实证明这是谷歌浏览器的行为 - Chrome预取页面,所以每次我更改内容时,Chrome都会预取并缓存页面(添加请求)。

  3. 添加图标以及使用Chrome以外的浏览器后,所有内容都按预期运行。

答案 1 :(得分:0)

$rating = ORM::factory('rating');

此行代表什么都没有。

如果要创建新记录,则应使用create()而不是save()。

$rating = new Model_Rating;

$rating->user_id = 1;
$rating->userlevel_id = 3;
$rating->category_id = 1;
$rating->page_id = 1;
$rating->rating = 4;
$rating->comments = 'This one is a real killer';
$rating->ratingstatus_id = 1;
$rating->create();

如果要加载具有给定ID的单个评级对象:

$found = ORM::factory('rating', 1);