2012-07-22 88 views
1

我剛剛安裝了Kohana 3.2的新副本,構建了我的數據庫,編寫了我的第一個模型,並嘗試測試它。一切正常,除了模型的「保存」方法執行兩次 - 我最終在數據庫中有兩個新條目,而不是一個。只有在使用下面顯示的「查找」代碼時纔會出現此問題。Kohana模型已保存兩次

爲什麼模型的保存會執行兩次,一次是預期的,一次是因爲發現?

下面的代碼:

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 

提前感謝!

回答

1

有跡象表明,引起了我的問題,兩個問題:

  1. 我沒有一個圖標在我的服務器上。許多瀏覽器請求一個,並且所有不是實際文件或目錄的URL都被重定向到索引頁面。每次我加載頁面時,瀏覽器都會請求一個缺少的圖標並重定向到我的索引頁 - 兩個請求。查看我的日誌後,這個頁面是什麼讓我失望:http://forum.kohanaframework.org/discussion/7447/error-kohana_request_exception/p1

  2. 我添加了一個favicon後,我仍然偶爾看到了雙重請求行爲。事實證明,這是Google Chrome - Chrome預取頁面的行爲,所以每當我更改內容時,Chrome都會預取並緩存頁面(添加請求)。

加入favicon後,除了使用Chrome瀏覽器之外的瀏覽器之後,所有內容的行爲都與預期一致。

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); 
+0

感謝您的回覆。我嘗試了您的更改,但不影響任何內容。根據Kohana文檔[鏈接](http://kohanaframework.org/3.2/guide/orm/using),這些只是同一功能的不同變體。 – 2012-07-26 18:14:26