Обновление поля массива в документе другим массивом - PullRequest
0 голосов
/ 07 мая 2019

В Laravel 5 с MongoDB и jenssegers я пытаюсь обновить поле массива документа.Но это не обновление.

Когда поле содержит Array [2], и я пытаюсь обновить его с помощью Array [1], оно не обновляется.С другой стороны, другие поля документа обновляются корректно.

Я проверил сценарии:

old value | new value | result
---------------------------------
Array(1)  | Array(2)  | OK
---------------------------------
Array(1)  | null      | OK
---------------------------------
Array(1)  | Array(0)  | OK
---------------------------------
Array(2)  | Array(1)  | NO UPDATE

Мой документ выглядит так:

{
    "name": "test",
    "default": 0,
    "variables": [
        {
            "name": "responsibilities",
            "type": "text"
        },
        {
            "name": "requirements",
            "type": "text"
        }
    ]
}

И мой код PHP (я имел делос таким вот пока, но это совсем не элегантно).Чего мне не хватает?

$document->name = $name;
$document->default = $default;
$document->variables = [];  // there is neccesity to clear this field first, because overriding with smaller array
$document->save();          // is faulty (for ex. when removing one variable)
$document->variables = $variables;
$document->save();
...