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