2

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のバグだと思います。それは問題ありません-私がそれを回避できる方法がある限り。

前もって感謝します。

4

0 に答える 0