首页 > 解决方案 > 如何从控制器laravel导出jstree所需的json

问题描述

我正在使用 jstree jQuery 插件将类别显示为树视图。

来自控制器的数据数组:

array:10 [
 0 => array:13 [
"id" => 1
"name" => "Request 1"
"content" => "Request content 1"
"type" => 1
"priority" => 1
"is_active" => 1
"created_at" => "2021-10-21T12:12:03.000000Z"
"updated_at" => "2021-10-21T12:12:03.000000Z"
"created_user_id" => 1
"created_user_name" => "Truong Nguyen"
"updated_user_id" => null
"updated_user_name" => null
"problems" => array:5 [
  0 => array:13 [
    "id" => 1
    "name" => "Problem 1 (Request 1)"
    "content" => "Problem content 1 (Request 1)"
    "priority" => 1
    "is_active" => 1
    "created_at" => "2021-10-21T12:12:03.000000Z"
    "updated_at" => "2021-10-21T12:12:03.000000Z"
    "request_id" => 1
    "created_user_id" => 1
    "created_user_name" => "Truong Nguyen"
    "updated_user_id" => null
    "updated_user_name" => null
    "solutions" => array:5 [
      0 => array:12 [
        "id" => 1
        "name" => "Solution 1 (Problem 1)"
        "content" => "Solution content 1 (Problem 1)"
        "priority" => 1
        "is_active" => 1
        "created_at" => "2021-10-21T12:12:04.000000Z"
        "updated_at" => "2021-10-21T12:12:04.000000Z"
        "problem_id" => 1
        "created_user_id" => 1
        "created_user_name" => "Truong Nguyen"
        "updated_user_id" => null
        "updated_user_name" => null
      ]
      1 => array:12 [
        "id" => 2
        "name" => "Solution 2 (Problem 1)"
        "content" => "Solution content 2 (Problem 1)"
        "priority" => 1
        "is_active" => 1
        "created_at" => "2021-10-21T12:12:04.000000Z"
        "updated_at" => "2021-10-21T12:12:04.000000Z"
        "problem_id" => 1
        "created_user_id" => 1
        "created_user_name" => "Truong Nguyen"
        "updated_user_id" => null
        "updated_user_name" => null
      ]
      2 => array:12 [
        "id" => 3
        "name" => "Solution 3 (Problem 1)"
        "content" => "Solution content 3 (Problem 1)"
        "priority" => 1
        "is_active" => 1
        "created_at" => "2021-10-21T12:12:04.000000Z"
        "updated_at" => "2021-10-21T12:12:04.000000Z"
        "problem_id" => 1
        "created_user_id" => 1
        "created_user_name" => "Truong Nguyen"
        "updated_user_id" => null
        "updated_user_name" => null
      ]
      3 => array:12 [
        "id" => 4
        "name" => "Solution 4 (Problem 1)"
        "content" => "Solution content 4 (Problem 1)"
        "priority" => 1
        "is_active" => 1
        "created_at" => "2021-10-21T12:12:04.000000Z"
        "updated_at" => "2021-10-21T12:12:04.000000Z"
        "problem_id" => 1
        "created_user_id" => 1
        "created_user_name" => "Truong Nguyen"
        "updated_user_id" => null
        "updated_user_name" => null
      ]
      4 => array:12 [
        "id" => 5
        "name" => "Solution 5 (Problem 1)"
        "content" => "Solution content 5 (Problem 1)"
        "priority" => 1
        "is_active" => 1
        "created_at" => "2021-10-21T12:12:04.000000Z"
        "updated_at" => "2021-10-21T12:12:04.000000Z"
        "problem_id" => 1
        "created_user_id" => 1
        "created_user_name" => "Truong Nguyen"
        "updated_user_id" => null
        "updated_user_name" => null
      ]
    ]
  ]
  1 => array:13 [
    "id" => 2
    "name" => "Problem 2 (Request 1)"
    "content" => "Problem content 2 (Request 1)"
    "priority" => 1
    "is_active" => 1
    "created_at" => "2021-10-21T12:12:03.000000Z"
    "updated_at" => "2021-10-21T12:12:03.000000Z"
    "request_id" => 1
    "created_user_id" => 1
    "created_user_name" => "Truong Nguyen"
    "updated_user_id" => null
    "updated_user_name" => null
    "solutions" => array:5 [
      0 => array:12 [
        "id" => 6
        "name" => "Solution 1 (Problem 2)"
        "content" => "Solution content 1 (Problem 2)"
        "priority" => 1
        "is_active" => 1
        "created_at" => "2021-10-21T12:12:04.000000Z"
        "updated_at" => "2021-10-21T12:12:04.000000Z"
        "problem_id" => 2
        "created_user_id" => 1
        "created_user_name" => "Truong Nguyen"
        "updated_user_id" => null
        "updated_user_name" => null
      ]
      1 => array:12 [
        "id" => 7
        "name" => "Solution 2 (Problem 2)"
        "content" => "Solution content 2 (Problem 2)"
        "priority" => 1
        "is_active" => 1
        "created_at" => "2021-10-21T12:12:04.000000Z"
        "updated_at" => "2021-10-21T12:12:04.000000Z"
        "problem_id" => 2
        "created_user_id" => 1
        "created_user_name" => "Truong Nguyen"
        "updated_user_id" => null
        "updated_user_name" => null
      ]
      2 => array:12 [
        "id" => 8
        "name" => "Solution 3 (Problem 2)"
        "content" => "Solution content 3 (Problem 2)"
        "priority" => 1
        "is_active" => 1
        "created_at" => "2021-10-21T12:12:04.000000Z"
        "updated_at" => "2021-10-21T12:12:04.000000Z"
        "problem_id" => 2
        "created_user_id" => 1
        "created_user_name" => "Truong Nguyen"
        "updated_user_id" => null
        "updated_user_name" => null
      ]
      3 => array:12 [
        "id" => 9
        "name" => "Solution 4 (Problem 2)"
        "content" => "Solution content 4 (Problem 2)"
        "priority" => 1
        "is_active" => 1
        "created_at" => "2021-10-21T12:12:04.000000Z"
        "updated_at" => "2021-10-21T12:12:04.000000Z"
        "problem_id" => 2
        "created_user_id" => 1
        "created_user_name" => "Truong Nguyen"
        "updated_user_id" => null
        "updated_user_name" => null
      ]
      4 => array:12 [
        "id" => 10
        "name" => "Solution 5 (Problem 2)"
        "content" => "Solution content 5 (Problem 2)"
        "priority" => 1
        "is_active" => 1
        "created_at" => "2021-10-21T12:12:04.000000Z"
        "updated_at" => "2021-10-21T12:12:04.000000Z"
        "problem_id" => 2
        "created_user_id" => 1
        "created_user_name" => "Truong Nguyen"
        "updated_user_id" => null
        "updated_user_name" => null
      ]
    ]
  ]
  2 => array:13 [
    "id" => 3
    "name" => "Problem 3 (Request 1)"
    "content" => "Problem content 3 (Request 1)"
    "priority" => 1
    "is_active" => 1
    "created_at" => "2021-10-21T12:12:03.000000Z"
    "updated_at" => "2021-10-21T12:12:03.000000Z"
    "request_id" => 1
    "created_user_id" => 1
    "created_user_name" => "Truong Nguyen"
    "updated_user_id" => null
    "updated_user_name" => null
    "solutions" => []
  ]
  3 => array:13 [
    "id" => 4
    "name" => "Problem 4 (Request 1)"
    "content" => "Problem content 4 (Request 1)"
    "priority" => 1
    "is_active" => 1
    "created_at" => "2021-10-21T12:12:03.000000Z"
    "updated_at" => "2021-10-21T12:12:03.000000Z"
    "request_id" => 1
    "created_user_id" => 1
    "created_user_name" => "Truong Nguyen"
    "updated_user_id" => null
    "updated_user_name" => null
    "solutions" => []
  ]
  4 => array:13 [
    "id" => 5
    "name" => "Problem 5 (Request 1)"
    "content" => "Problem content 5 (Request 1)"
    "priority" => 1
    "is_active" => 1
    "created_at" => "2021-10-21T12:12:03.000000Z"
    "updated_at" => "2021-10-21T12:12:03.000000Z"
    "request_id" => 1
    "created_user_id" => 1
    "created_user_name" => "Truong Nguyen"
    "updated_user_id" => null
    "updated_user_name" => null
    "solutions" => []
  ]
]
  ]
  1 => array:13 [
"id" => 2
"name" => "Request 2"
"content" => "Request content 2"
"type" => 1
"priority" => 1
"is_active" => 1
"created_at" => "2021-10-21T12:12:03.000000Z"
"updated_at" => "2021-10-21T12:12:03.000000Z"
"created_user_id" => 1
"created_user_name" => "Truong Nguyen"
"updated_user_id" => null
"updated_user_name" => null
"problems" => array:5 [
  0 => array:13 [
    "id" => 6
    "name" => "Problem 1 (Request 2)"
    "content" => "Problem content 1 (Request 2)"
    "priority" => 1
    "is_active" => 1
    "created_at" => "2021-10-21T12:12:04.000000Z"
    "updated_at" => "2021-10-21T12:12:04.000000Z"
    "request_id" => 2
    "created_user_id" => 1
    "created_user_name" => "Truong Nguyen"
    "updated_user_id" => null
    "updated_user_name" => null
    "solutions" => []
  ]
  1 => array:13 [
    "id" => 7
    "name" => "Problem 2 (Request 2)"
    "content" => "Problem content 2 (Request 2)"
    "priority" => 1
    "is_active" => 1
    "created_at" => "2021-10-21T12:12:04.000000Z"
    "updated_at" => "2021-10-21T12:12:04.000000Z"
    "request_id" => 2
    "created_user_id" => 1
    "created_user_name" => "Truong Nguyen"
    "updated_user_id" => null
    "updated_user_name" => null
    "solutions" => []
  ]
  2 => array:13 [
    "id" => 8
    "name" => "Problem 3 (Request 2)"
    "content" => "Problem content 3 (Request 2)"
    "priority" => 1
    "is_active" => 1
    "created_at" => "2021-10-21T12:12:04.000000Z"
    "updated_at" => "2021-10-21T12:12:04.000000Z"
    "request_id" => 2
    "created_user_id" => 1
    "created_user_name" => "Truong Nguyen"
    "updated_user_id" => null
    "updated_user_name" => null
    "solutions" => []
  ]
  3 => array:13 [
    "id" => 9
    "name" => "Problem 4 (Request 2)"
    "content" => "Problem content 4 (Request 2)"
    "priority" => 1
    "is_active" => 1
    "created_at" => "2021-10-21T12:12:04.000000Z"
    "updated_at" => "2021-10-21T12:12:04.000000Z"
    "request_id" => 2
    "created_user_id" => 1
    "created_user_name" => "Truong Nguyen"
    "updated_user_id" => null
    "updated_user_name" => null
    "solutions" => []
  ]
  4 => array:13 [
    "id" => 10
    "name" => "Problem 5 (Request 2)"
    "content" => "Problem content 5 (Request 2)"
    "priority" => 1
    "is_active" => 1
    "created_at" => "2021-10-21T12:12:04.000000Z"
    "updated_at" => "2021-10-21T12:12:04.000000Z"
    "request_id" => 2
    "created_user_id" => 1
    "created_user_name" => "Truong Nguyen"
    "updated_user_id" => null
    "updated_user_name" => null
    "solutions" => []
  ]
]
  ]
  2 => array:13 [
"id" => 3
"name" => "Request 3"
"content" => "Request content 3"
"type" => 2
"priority" => 1
"is_active" => 1
"created_at" => "2021-10-21T12:12:03.000000Z"
"updated_at" => "2021-10-21T12:12:03.000000Z"
"created_user_id" => 1
"created_user_name" => "Truong Nguyen"
"updated_user_id" => null
"updated_user_name" => null
"problems" => []
  ]
  3 => array:13 [
"id" => 4
"name" => "Request 4"
"content" => "Request content 4"
"type" => 1
"priority" => 1
"is_active" => 1
"created_at" => "2021-10-21T12:12:03.000000Z"
"updated_at" => "2021-10-21T12:12:03.000000Z"
"created_user_id" => 1
"created_user_name" => "Truong Nguyen"
"updated_user_id" => null
"updated_user_name" => null
"problems" => []
  ]
  4 => array:13 [
"id" => 5
"name" => "Request 5"
"content" => "Request content 5"
"type" => 1
"priority" => 1
"is_active" => 1
"created_at" => "2021-10-21T12:12:03.000000Z"
"updated_at" => "2021-10-21T12:12:03.000000Z"
"created_user_id" => 1
"created_user_name" => "Truong Nguyen"
"updated_user_id" => null
"updated_user_name" => null
"problems" => []
  ]
  5 => array:13 [
"id" => 6
"name" => "Request 6"
"content" => "Request content 6"
"type" => 2
"priority" => 1
"is_active" => 1
"created_at" => "2021-10-21T12:12:03.000000Z"
"updated_at" => "2021-10-21T12:12:03.000000Z"
"created_user_id" => 1
"created_user_name" => "Truong Nguyen"
"updated_user_id" => null
"updated_user_name" => null
"problems" => []
  ]
  6 => array:13 [
"id" => 7
"name" => "Request 7"
"content" => "Request content 7"
"type" => 1
"priority" => 1
"is_active" => 1
"created_at" => "2021-10-21T12:12:03.000000Z"
"updated_at" => "2021-10-21T12:12:03.000000Z"
"created_user_id" => 1
"created_user_name" => "Truong Nguyen"
"updated_user_id" => null
"updated_user_name" => null
"problems" => []
  ]
  7 => array:13 [
"id" => 8
"name" => "Request 8"
"content" => "Request content 8"
"type" => 2
"priority" => 1
"is_active" => 1
"created_at" => "2021-10-21T12:12:03.000000Z"
"updated_at" => "2021-10-21T12:12:03.000000Z"
"created_user_id" => 1
"created_user_name" => "Truong Nguyen"
"updated_user_id" => null
"updated_user_name" => null
"problems" => []
  ]
  8 => array:13 [
"id" => 9
"name" => "Request 9"
"content" => "Request content 9"
"type" => 2
"priority" => 1
"is_active" => 1
"created_at" => "2021-10-21T12:12:03.000000Z"
"updated_at" => "2021-10-21T12:12:03.000000Z"
"created_user_id" => 1
"created_user_name" => "Truong Nguyen"
"updated_user_id" => null
"updated_user_name" => null
"problems" => []
  ]
  9 => array:13 [
"id" => 10
"name" => "Request 10"
"content" => "Request content 10"
"type" => 2
"priority" => 1
"is_active" => 1
"created_at" => "2021-10-21T12:12:03.000000Z"
"updated_at" => "2021-10-21T12:12:03.000000Z"
"created_user_id" => 1
"created_user_name" => "Truong Nguyen"
"updated_user_id" => null
"updated_user_name" => null
"problems" => []

] ]

而另一方面,JStree 插件需要一个 json 格式,比如从中创建树视图:

  {
                                "text": "Information",
                                "state": {
                                    "opened": true,
                                    "disabled": true
                                },
                                "type": "wrap",
                                "children": [
                                    {
                                        "text": "Request 1",
                                        "type": "request",
                                        "children": [
                                            {
                                                "text": "Problem 1 (Request 1)",
                                                "type": "problem",
                                                "children": [
                                                    {
                                                        "text": "Solution 1 (Problem 1)",
                                                        "children": [],
                                                        "id": "1-3",
                                                        "icon": "folder"
                                                    }
                                                ],
                                                "id": "New node 2",
                                            },
                                            {
                                                "text": "Problem 2 (Request 1)",
                                                "children": [
                                                    {
                                                        "text": "Solution 1 (Problem 2)",
                                                        "children": [],
                                                        "id": "1-3",
                                                        "icon": "folder"
                                                    }
                                                ],
                                                "id": "requestId-problemId-Solution",
                                                "icon": "folder"
                                            }
                                        ],
                                    },
                                    {
                                        "text": "Request 2",
                                        "type": "request",

                                        "children": [
                                            {
                                                "text": "Problem 1 (Request 2)",
                                                "icon": "folder",
                                                
                                            },
                                            {
                                                "text": "ádasdasd",
                                                "children": [
                                                    {
                                                        "text": "ádf",
                                                        "children": [],
                                                        "icon": "folder"
                                                    }
                                                ],
                                                "icon": "folder"
                                            },
                                            {
                                                "text": "many",
                                                "children": [],
                                                "icon": "folder"
                                            }
                                        ],
                                    }
                                ]
                            }

如何将来自 laravel 控制器的数据数组的返回格式转换为需要 jstree 的适当格式?

标签: phparraysjsonlaraveljstree

解决方案


推荐阅读