Hallöschen всех,дублировать существующую ветку дерева и сохранить его в базу данных
я имею иерархический массив, который я получаю от jsTree при копировании + вставить узел, и я хочу, чтобы вставить новое дерево ветвь в базу данных.
В моей таблице есть структура списка смежности с тремя полями «id», «text», «parent_id».
Структура может быть как ниже, так и более вложенной. Я не понял, как отслеживать родителя, чтобы узнать, какие дети принадлежат родительскому элементу, когда я рекурсивно перехожу к массиву.
Какой может быть самый чистый подход?
Array(
[id] => 1
[text] => 'a'
[children]
=>Array(
[0] => Array
(
[id] => 2
[text] => 'b'
[children] => []
)
[1] => Array
(
[id] => 3
[text] => 'c'
[children] => Array(
[0] => Array(
[id] => 4
[text] =>''
[children]=>[]
)
)
)
)
)
Таким образом, окончательный гуманного, который работает для меня это один
function insertRows($data, $parent_id)
{
foreach ($data as $key => $value) {
if(isset($value['text']))
// here insert the the $value['text'] and get the generated $id
if (isset($value['children'])) {
insertRows($value['children'], $id);
}
}
}
Не уверен, в чем вопрос, но если предположить, что первый уровень является родительским, вы не можете просто «$ parent = $ array ['id'];'? – Epodax
Я пытаюсь дублировать ветку. Поэтому требуется вставить первый узел, получить новый созданный идентификатор и создать его дочерние элементы с этим id как parent_id –
, но что, если у меня есть 3 узла на одном уровне? Я вставляю 1-й, 2-й, 3-й и, если я иду рядом с вставкой детей из 1-го, у меня больше нет идентификатора 1-го числа. –