2011-08-22 43 views
0

我目前正在使用Kohana 3.2編寫一個應用程序,這很棒,但是文檔留下了一些需要的東西。Kohana 3更新/添加相關條目

我有一個食譜模型和一個評分模型,它們通過has_many和belongs_to相關。評分屬於配方,配方有很多評分。通過找到與當前用戶的id和配方相對應的評級,我能夠成功檢索配方的評級,方法是使用$ recipe-> ratings-> where('user_id','=','$用戶> ID')。一旦我檢索了評分,我就可以成功更新它。

$recipe = ORM::factory('recipe') 
     ->where('id', '=', $recipe_id) 
     ->find(); 

    $my_rating = $recipe->ratings 
     ->where('user_id', '=', $user->id) 
     ->find(); 

    $my_rating->rating = $rating; 
    $my_rating->save(); 

問題出現在評級尚不存在時。在我搜索的所有內容中,我發現我應該使用$ recipe-> add()函數來添加評分,但是我仍然會收到錯誤。當我嘗試加載評分時,是否應該檢查它是否找到了條目?我覺得ORM有辦法知道它是否存在,如果不存在,它應該創建它。

上述代碼將創建新評級,但不會自動將recipe_id添加到評級表。我應該先將配方添加到配方中嗎?

+0

通過在'find()'後加'($ my_rating-> loaded()',你可以檢查評分是否已經存在。但是save()已經檢查了一個條目,如果沒有找到,將會'INSERT',如果條目存在,將會'UPDATE'。你能更具體地瞭解你所得到的錯誤嗎? – Luwe

回答

0

你應該在你的'食譜'表中有'引誘'coumn。

你在做正確的事情。

如果你在你的'食譜'表中有'raiting'coumn,選定行的raiting屬性('raiting'coumn)將被填入$ rating /的值。