Генерация JSON с MySQL и PHP для динамического d3.js lib - PullRequest
0 голосов
/ 02 октября 2018

Что случилось, ребята!

Я работаю с Laravel над клиентским проектом, где я хочу настроить древовидную структуру для пользователей, зарегистрированных в системе, я нашел скрипт из библиотеки d3.js, которыйвыполняет задачу, и для этого он использует JSON для получения данных.

Структура, над которой он работает, выглядит следующим образом:

{
    "name": "Top Level",
    "parent": null,
    "children": [{
            "name": "Level 2: A",
            "parent": "Top Level",
            "children": [{
                    "name": "Son of A",
                    "parent": "Level 2: A"
                },
                {
                    "name": "Daughter of A",
                    "parent": "Level 2: A"
                }
            ]
        },
        {
            "name": "Level 2: B",
            "parent": "Top Level"
        }
    ]
}

Я пытался подготовить свой JSON в том же формате, ноЯ не понял логику, которую он будет генерировать из автоформирования.У меня есть пользователь в моей базе данных, который, как и в примере, имеет "parent": null, в моем случае: "id_user_parent": null, а все остальные пользователи связаны с другими идентификаторами пользователей.

У меня вопрос, как выйти из этогопользователь, который "id_user_parent": сначала null и другие, которые ему нравятся у их соответствующих детей?

Мой звонок в моем контроллере:

$users = User::select('name_first', 'name_second', 'id_user_parent')->get()

И ответ из моей базы данных:

[
    {
        "name_first": "Tiago",
        "name_second": "Revers Paza",
        "id_user_parent": null
    }, 
    {
        "name_first": "Yuri",
        "name_second": "Luiz Hugo da Cunha",
        "id_user_parent": 1
    }, 
    {
        "name_first": "Severino",
        "name_second": "Ben\u00edcio das Neves",
        "id_user_parent": 1
    }
]

Я сгенерировал скрипт, обработал эти данные из базы данных и получил следующий результат:

$users = User::select('name_first', 'name_second', 'id_user_parent')->get();

foreach ($users as $user) {
    if ($user['id_user_parent'] == null) {
        $main['name'] = $user['name_first'] . ' ' . $user['name_second'];
        $main['parent'] = $user['id_user_parent'];

        $data = $main;
    }
}
foreach($users as $key => $user) {
    if ($user['id_user_parent'] != null) {
        $data['children'][$key]['name'] = $user['name_first'] . ' ' . $user['name_second'];
        $data['children'][$key]['parent'] = $user['id_user_parent'];
    }
}
dd($data);

И мой результат JSON:

array:3 [▼
    "name" => "Tiago Revers Paza"
    "parent" => null
    "children" => array:2 [▼
        1 => array:2 [▼
            "name" => "Yuri Luiz Hugo da Cunha"
            "parent" => 1
        ]
        2 => array:2 [▼
            "name" => "Severino Benício das Neves"
            "parent" => 1
        ]
    ]
]

То естькак и ожидалось, но он работает только с одним уровнем, и идея состоит в том, чтобы соотноситься в соответствии с id_user_parent

Есть ли у кого-нибудь идеи о том, как динамически монтировать этот JSON из моей базы данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...