Be part of JetBrains PHPverse 2026 on June 9 – a free online event bringing PHP devs worldwide together.

swarley_HIMYM's avatar

laravel hierarchy

this is the JSON


{
    "status": 200,
    "data": {
        "id": 5,
        "salescode": "sales1",
        "username": "Sales1",
        "role": "sales",
        "parent_id": 10,
        "created_at": "2020-07-04 19:57:23",
        "updated_at": "2020-07-03 02:13:18"
    },
    "superior": [
        [
            {
                "id": 10,
                "parent_id": 11,
                "salescode": "tl01",
                "username": "Leader",
                "role": "leader"
            }
        ],
        [
            {
                "id": 11,
                "parent_id": 12,
                "salescode": "spv01",
                "username": "Supervisor",
                "role": "supervisor"
            },
            {
                "id": 26,
                "parent_id": 12,
                "salescode": "spv02",
                "username": "Supervisor",
                "role": "supervisor"
            }
        ]
    ]
}


this is the table

-------------------------------------------------------------
id | salescode | username| role | parent_id 
---------------------------------------------------------------

I managed to get the leader data from the parent user id with the following code. note: You can see Json above

whereas if I try to get supervisor data, instead it removes all the supervisor role user data.

  $super = Auth::user()->parent_id;
        $Find = DB::table('users')->where('id','=',$super)
                  ->select('id','parent_id','salescode','username','role')
                  ->groupBy('id','parent_id','salescode','username','role')
                  ->get();

```
.
this is the supervisor roles code.

```
$parent = Auth::user()->parent_id;
        for ($i=0; $i <$parent ; $i++) { 
          $spv = DB::table('users')
              ->where('role','=','supervisor')
              ->select('id','parent_id','salescode','username','role')
              ->groupBy('id','parent_id','salescode','username','role')
              ->get();
        }
```


how is it so that I can get supervisor data, from the parent id users 'roles sales' itself?
0 likes
4 replies
jlrdw's avatar

Just example:

To get last role mentioned for an example:

        $mydata = '{
    "status": 200,
    "data": {
        "id": 5,
        "salescode": "sales1",
        "username": "Sales1",
        "role": "sales",
        "parent_id": 10,
        "created_at": "2020-07-04 19:57:23",
        "updated_at": "2020-07-03 02:13:18"
    },
    "superior": [
        [
            {
                "id": 10,
                "parent_id": 11,
                "salescode": "tl01",
                "username": "Leader",
                "role": "leader"
            }
        ],
        [
            {
                "id": 11,
                "parent_id": 12,
                "salescode": "spv01",
                "username": "Supervisor",
                "role": "supervisor"
            },
            {
                "id": 26,
                "parent_id": 12,
                "salescode": "spv02",
                "username": "Supervisor",
                "role": "supervisor"
            }
        ]
    ]
}';
    $decoded = json_decode($mydata, true);
                   
        echo $decoded["superior"][1][1]["role"];

supervisor

Just example of getting an element.

decoded looks like:

array:3 [▼
  "status" => 200
  "data" => array:7 [▼
    "id" => 5
    "salescode" => "sales1"
    "username" => "Sales1"
    "role" => "sales"
    "parent_id" => 10
    "created_at" => "2020-07-04 19:57:23"
    "updated_at" => "2020-07-03 02:13:18"
  ]
  "superior" => array:2 [▼
    0 => array:1 [▼
      0 => array:5 [▼
        "id" => 10
        "parent_id" => 11
        "salescode" => "tl01"
        "username" => "Leader"
        "role" => "leader"
      ]
    ]
    1 => array:2 [▼
      0 => array:5 [▼
        "id" => 11
        "parent_id" => 12
        "salescode" => "spv01"
        "username" => "Supervisor"
        "role" => "supervisor"
      ]
      1 => array:5 [▼
        "id" => 26
        "parent_id" => 12
        "salescode" => "spv02"
        "username" => "Supervisor"
        "role" => "supervisor"
      ]
    ]
  ]
]

Loop a section

foreach ($decoded["superior"][1][1] as $key => $value){
     echo $key . " | " . $value . "<br>";
}

Yields:

supervisorid | 26
parent_id | 12
salescode | spv02
username | Supervisor
role | supervisor
swarley_HIMYM's avatar

not like that. i mean,i want to get parent_id of that users

jlrdw's avatar

Those were just examples of working with Json. Was hoping examples would point you in the right direction.

And you could get a section of the array and collect it, in other words see if collections will help you.

Also why don't you set up Eloquent relationships.

The loop example, was just an example loop and get what you actually need.

Edit: apparently you are saying your second query does not work.

Have you tried reworking it or log the query to see the exact SQL it's returning.

Please or to participate in this conversation.