Lithium PHPフレームワーク(MongoDBデータベースを使用)を使用して、アプリケーションの入力/編集フォームを作成しています。
私はMongoDBに埋め込まれたドキュメントの概念を使用しています。最初の保存を機能させるには少し調整が必要でしたが、正しく機能するように設定しました。
MongoDBを見ると、オブジェクトは次のようになっています。
{
_id: "5119951516c19",
level_name: "Testing",
questions: [
{
question_id: "5119951516cb5",
question_text: "Why is the sky blue"
},
{
question_id: "5119951516cc3",
question_text: "Why is grass green"
}
]
}
ここで、次のような非常に単純な編集を行いたい場合:
$level = Levels::find($id);
$level["level_name"] = "Testing - UPDATE";
$level->save();
良いニュースは、問題のフィールドが保存されることです。しかし、悪いニュースは、それが私のオブジェクトモデル全体を破壊することです。MongoDBの新しいオブジェクトモデルは次のように保存されます。
{
0: {
question_id: "5119951516cb5",
question_text: "Why is the sky blue"
},
1: {
question_id: "5119951516cc3",
question_text: "Why is grass green"
},
_id: "5119951516c19",
level_name: "Testing - UPDATE",
questions: [
{
question_id: "5119951516cb5",
question_text: "Why is the sky blue"
},
{
question_id: "5119951516cc3",
question_text: "Why is grass green"
}
]
}
基本的なドキュメントは同じままでしたが、どういうわけか、埋め込まれたドキュメントはキー「0」と「1」の下でトップレベルにスローされました。
私は高低を検索しましたが、なぜこれが起こっているのか理解できません。保存機能はとてもシンプルなので、これはLithiumのバグだと思います。それは問題ありません-私がそれを回避できる方法がある限り。
前もって感謝します。