как мне вывести свою структуру в таком же виде как на картинке, если моя структура под цифрой 1 и моя структура вниз идет на 6 уровней
Это достаточно просто делается.
С точки зрения хранения элементов дерева в базе достаточно добавить поле parent_id
(или похожее по смыслу) в таблицу элементов дерева
--
-- Структура таблицы `tree_elements`
--
CREATE TABLE `tree_elements` (
`id` int(10) UNSIGNED NOT NULL,
`parent_id` int(10) UNSIGNED DEFAULT NULL,
`title` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`options` json DEFAULT NULL,
`created_at` timestamp NULL DEFAULT NULL,
`updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
--
-- Индексы таблицы `tree_elements`
--
ALTER TABLE `tree_elements`
ADD PRIMARY KEY (`id`),
ADD KEY `tree_elements_parent_id_foreign` (`parent_id`);
--
-- AUTO_INCREMENT для таблицы `tree_elements`
--
ALTER TABLE `tree_elements`
MODIFY `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT;
--
-- Ограничения внешнего ключа таблицы `tree_elements`
--
ALTER TABLE `tree_elements`
ADD CONSTRAINT `tree_elements_parent_id_foreign` FOREIGN KEY (`parent_id`) REFERENCES `tree_elements` (`id`) ON DELETE CASCADE;
COMMIT;
Это только структура таблицы, но чтобы вывести структуру, нужно получить эелемент по id
, а потом рекурсивно получать элементы, по нужному parent_id
.
Например, получаем эелемент по его id
: SELECT * FROM tree_elements WHERE id = ?
. Потом получаем массив элементов 1-го уровня вложености, у которых parent_id
равен id
искомого элемента (SELECT * FROM tree_elements WHERE parent_id = ?
). Получив список элементов второго уровня, делаем запрос к таблице уже с массивом id
элементов второго уровня.
Например, циклом прошлись по полученным результатам элементов второго уровня, вытащили id-шники в массив $ids
. Потом делаем запрос элементов третьего уровня, в который передаем массив айдишников - SELECT * FROM tree_elements WHERE id IN (?,?,?)
.
При обработке результатов обычно создается ассоциативный массив с полем children
$element = [
'title' => 'root',
'children' => [
[
'title' => 'child1',
'children' => [
[
'title' => 'child2',
'children' => []
],
]
],
]
]
Оборудование для ресторана: новинки профессиональной кухонной техники
Частный дом престарелых в Киеве: комфорт, забота и профессиональный уход
При первом сеансе с сайтом генерируется уникальный CSRF код, который нужно передать для авторизацииПочему-то не получается
Нашёл тему Авторизация с помощью CURL но непонятноу меня есть адрес где нужно авторизоваться, авторизацию хочу сквозную т
К примеру, вместо 0 везде писать MyConst0 и тд