1

私はモデルニュースを持っていますembedsManyモデルコメントとモデルコメントで私はembedsManyモデルを持っています返信

私がこれを行うとき:

$new = News::create(["title"=>"Simple new", "body"=>"this is a simple news"]);
$comment = $new->comments()->create(["subject"=>"comment 1", "body"=>"my comment"]);

挿入はOKで、DBのデータは次のとおりです。

{ 
    "title" : "Simple new",
    "body" : "this is a simple news", 
    "_id" : ObjectId("5569b157bed33066220041ac"), 
    "comments" : [ 
    {
        "subject" : "comment 1",
        "body" : "my comment",
        "_id" : ObjectId("5569cc28bed330693eb7acd9")
    }
    ]
}

しかし、私がこれを行うと:

$reply = $comment->replies()->create(["subject"=>"reply to comment 1", "body"=>"my reply"]);

DB は次のとおりです。

{ 
    "title" : "Simple new",
    "body" : "this is a simple news", 
    "_id" : ObjectId("5569b157bed33066220041ac"), 
    "comments" : [ 
    {
        "subject" : "comment 1",
        "body" : "my comment",
        "_id" : ObjectId("5569cc28bed330693eb7acd9"),
        "replies" : { 
            "0" : {
                "subject" : "reply to comment 1",
                "body" : "my reply",
                "_id" : ObjectId("5569cc33bed330693eb7acda"
            }
        }
    }
    ]
}

返信の削除が機能しない

4

1 に答える 1

2

解決策 1:

jenssegers/laravel-mongodb フレームワークでは、プッシュまたは更新メソッドを使用してドキュメントを配列に挿入できます。注: 以前のバージョンには push メソッドはありません。

解決策 2: (推奨)

Mongodb のスキーマ ベース フレームワーク (nosql、スキーマのないデータベース) の使用は間違っており、php の公式の Mongodb フレームワークの使用が推奨されます。

http://docs.mongodb.org/ecosystem/drivers/php

クエリを高速化するには、インデックス作成を使用できます。

このソリューションでは、次のデータ構造を使用できます。

{

    "_id" : ObjectId("5577d8a419e5eae7ae17a058"),

    "name" : "My New",

    "comments" : {

        "5577d8c419e5eae7ae17a059": {

        "subject" : "My Comment",

        "body" : "BODY",

        "replies" : {

            "5577d91619e5eae7ae17a05b": {

            "subject" : "My Reply",

            "body" : "BODY"

            }

        }

    }

}
于 2015-06-17T12:06:58.763 に答える