2011-08-22 2 views
0

В настоящее время я пишу приложение с использованием Kohana 3.2, и это замечательно, однако документация оставляет желать лучшего.Kohana 3 Обновление/добавление связанных записей

У меня есть модель рецепта и модель оценки, которые связаны с has_many и belongs_to. Рейтинги принадлежат рецепту, а рецепт имеет множество оценок. Я смог успешно получить рейтинг рецепта, найдя рейтинг, который соответствует как идентификатору текущего пользователя, так и рецепту с помощью $ recipe-> ratings-> where ('user_id', '=', '$ user-> идентификатор '). После того, как я получил рейтинг, я могу успешно его обновить.

$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

С '$ my_rating-> loaded()' после 'find()' вы можете проверить, существует ли рейтинг. Но save() уже проверяет запись и будет 'INSERT', если не найден, и' UPDATE', если запись существует. Можете ли вы уточнить, какие ошибки вы получаете? – Luwe

ответ

0

Вы должны иметь «рейтинг» в таблице «рецепт».

Вы делаете бесконечное право.

Если у вас есть «рейтинг» в вашей таблице «рецепт», свойство рейтинга («рейтинг») для выбранной строки будет заполнено значением $ rating /.

Смежные вопросы