CakePHP - Поведение дерева: многомерный ассоциативный массив в дерево - PullRequest
0 голосов
/ 23 сентября 2019

Я только начинаю с поведением CakePHP 3 Tree (https://book.cakephp.org/3.0/en/orm/behaviors/tree.html). У меня есть ситуация, когда у меня есть существующее дерево, и я хотел бы изменить их порядок на основе массива. Я попробовал это так:

        $data = [
            [
                'id' => 1,
                'parent_id' => null,
                'children' => [
                    [
                        'id' => 3,
                        'children' => [
                            'id' => 4,
                            'children' => [
                                'id' => 5
                            ]
                        ]
                    ]
                ]
            ],
            [
                'id' => 2,
                'parent_id' => false
            ],
        ];

        $minutesTable->patchEntities($minutes, $data);

        $minutesTable->saveMany($minutes);

... Надеюсь, что поле children будет работать, но, к сожалению, нет. Приведенная выше попытка не возвращает ошибку, но поле children просто игнорируется.

Есть ли встроенный способ для достижения этой цели? Какой будет элегантная альтернатива?

Просто добавлю: изменение индивидуума parent_id работает в моем приложении. То, что я ищу, - это полная перестройка дереваиспользуя массив ссылок.

1 Ответ

0 голосов
/ 23 сентября 2019

Я думаю, вы должны найти ассоциацию в cakephp.Ссылка: Cakephp 3 Association

Например, у вас один родитель и много детей, а у детей много детей.Таким образом, родитель станет средними данными.И эти таблицы должны иметь отношения друг с другом.Я переопределю ваш массив в качестве примера:

$data = array:2 [
   0 => array:2 [
      "parent_id" => "1"
      "name" => "Mr. A"
      "childrens" => array:2 [
          0 => array:2 [
            "id" => "32"
            "parent_id" => "1"
            "name" => "Mr. A SON"
            "grand_childrens" => array:1 [
                0 => array:0 [
                "id" => "4"
                "grand_children_id" => "32"
                "name" => "Mr. A GRAND SON"
                ]
            ]
          ],
          1 => array:0 [
            "id" => "2"
            "parent_id" => "1"
            "name" => "Mr. A Daughter"
          ]
      ]

    ],
    1 => array:2 [
      "parent_id" => "2"
      "name" => "Mr. B"
      "childrens" => array:2 [
          0 => array:2 [
            "id" => "5"
            "parent_id" => "2"
            "name" => "Mr. B SON"
            "grand_childrens" => array:1 [
                0 => array:0 [
                "id" => "7"
                "grand_children_id" => "5"
                "name" => "Mr. B GRAND SON"
                ]
            ]
          ],
          1 => array:0 [
            "id" => "4"
            "parent_id" => "2"
            "name" => "Mr. B Daughter"
          ]
      ]

    ]

]
...