1

我刚刚安装了 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

提前致谢!

4

2 回答 2

1

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

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

  2. 在我添加了一个 favicon 之后,我仍然偶尔会看到双重请求行为。原来这是 Google Chrome 的一种行为——Chrome 会预取页面,所以每次我更改内容时,Chrome 都会预取并缓存页面(添加请求)。

添加图标后并使用除 Chrome 之外的浏览器时,一切都按预期运行。

于 2012-07-26T18:35:11.243 回答
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);
于 2012-07-25T00:06:03.537 回答