2011-08-22 16 views
0

私は現在、Kohana 3.2を使用してアプリケーションを作成していますが、これは素晴らしいドキュメントです。Kohana 3関連エントリーの更新/追加

私はレシピモデルと評価モデルを持っています。これは、has_manyとbelongs_toによって関連しています。レーティングはレシピに属し、レシピには多くのレーティングがあります。私は、現在のユーザーのIDとレシピの両方に対応するレーティングを$ recipe-> ratings-> where( 'user_id'、 '='、 '$')で検索することで、レシピのレーティングを正常に取得できました。 user-> 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が存在するかどうかを知る方法があるように感じ、そうでない場合は作成する必要があります。

上記のコードは新しい評価を作成しますが、自動的にレシピテーブルにレシピIDを追加することはありません。レシピにレーティングを最初に追加すべきですか?

+0

'$ my_rating-> loaded()'を 'find()'の後に指定すると、評価が既に存在するかどうかを確認できます。しかし、save()は既にエントリをチェックし、見つからなければ 'INSERT'し、エントリが存在する場合は' UPDATE'を行います。どのようなエラーが発生しているのか、より具体的にすることはできますか? – Luwe

答えて

0

「レシピ」テーブルに「欲望」のクーミングがあるはずです。

あなたは正しいことをしています。

'レシピ'テーブルで 'レギング'している場合は、選択した行のレギングプロパティ( 'raiting' coumn)に$ rating /の値が入ります。

関連する問題