【问题标题】:Kohana Model Saved TwiceKohana 模型两次保存
【发布时间】:2012-07-22 06:23:07
【问题描述】:

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

提前致谢!

【问题讨论】:

    标签: php controller action kohana-3.2


    【解决方案1】:

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

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

    2. 添加网站图标后,我仍然偶尔会看到双重请求行为。原来是谷歌浏览器的一种行为——Chrome会预取页面,所以每次我更改内容时,Chrome都会预取并缓存页面(添加请求)。

    添加网站图标后,当使用 Chrome 以外的其他浏览器时,一切正常。

    【讨论】:

      【解决方案2】:
      $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);
      

      【讨论】:

      • 感谢您的回复。我尝试了您的更改,但没有任何影响。根据 Kohana 文档 link,这些只是相同功能的不同变体。
      猜你喜欢
      • 2019-10-06
      • 1970-01-01
      • 2016-10-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多