2011-08-22 60 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 /的值。