我刚安装了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
提前致谢!
答案 0 :(得分:1)
导致我的问题有两个问题:
我的服务器上没有favicon.ico。许多浏览器请求一个,并且所有非实际文件或目录的URL都被重定向到索引页面。每次我加载页面时,浏览器都会请求丢失的favicon并重定向到我的索引页面 - 两个请求。查看我的日志后,这个页面让我感到惊讶:http://forum.kohanaframework.org/discussion/7447/error-kohana_request_exception/p1
我添加了一个favicon后,我偶尔也会看到双重请求行为。事实证明这是谷歌浏览器的行为 - Chrome预取页面,所以每次我更改内容时,Chrome都会预取并缓存页面(添加请求)。
添加图标以及使用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);