Laravel.io
return Datatables::of($Orders)
            ->addColumn('reg_city', function (Orders $order) {
                $data = (array)json_decode($order->data, TRUE);
                $data = (array)$data['f'];
                return isset($data['reg-city']) ? $data['reg-city']: $data['reg-sub'] . $data['reg-point'];
            })
            ->addColumn('name_short', function (Orders $order) {
                $data = (array)json_decode($order->data, TRUE);

                $dataT =  (array)$data['f'];
                return isset($dataT['name-short']) ?
                    $dataT['name-short']
                    :
                    (isset($data['edit_fname']) ? $data['edit_fname'] . ' ' . $data['edit_name'] . ' ' .$data['edit_pname'] : '');
            })
            ->addColumn('user_id', function (Orders $order){
                return User::find($order->user_id)->name;
            })
            ->addColumn('identification', '')
            ->addColumn('checked', '')
            ->addColumn('manager', function (Orders $order) {
                if ($order->manager_id > 0) {
                    if (User::where('id', $order->manager_id)->first()) {
                        return json_encode(['name' => User::where('id', $order->manager_id)->first()->name,'id' => User::where('id', $order->manager_id)->first()->id], JSON_UNESCAPED_UNICODE);
                    } else {
                        return 'null';
                    }
                }

                return 'null';
            })
            ->addColumn( 'stepprocent', function (Orders $order) {

                if (!is_array($order->data)) {

                    $order->data = json_decode($order->data, TRUE);
                }

                switch ($order->type) {
                    case "ooo":
                        $oooOrder = new OOOOrders($order, $order->step, 7);
                        $oooOrder->setStatuses();
                        break;
                    case "ip":
                        $ipOrder = new IpOrder($order, $order->step, 5);
                        $ipOrder->setStatuses();
                        break;
                    case "kfh":
                        $kfhOrder = new KFHOrder($order, $order->step);
                        $kfhOrder->setStatuses();
                        break;
                    default:
                        0;

                }

                return $order->stepprocent;
            })
            ->addColumn('action', '')
            ->addColumn( 'status_text', function (Orders $order) {

                if (!is_array($order->data)) {
                    $order->data = (array)json_decode($order->data, TRUE);
                }

                switch ($order->type) {
                    case "ooo":
                        $oooOrder = new OOOOrders($order, $order->step, 7);
                        $oooOrder->setStatuses();
                        break;
                    case "ip":
                        $ipOrder = new IpOrder($order, $order->step, 5);
                        $ipOrder->setStatuses();
                        break;
                    case "kfh":
                        $kfhOrder = new KFHOrder($order, $order->step);
                        $kfhOrder->setStatuses();
                        break;
                    default:
                        0;

                }


                return $order->status_text;
            })
            ->addColumn('open', '')
            ->with([
                "recordsTotal" => $count,
                'recordsFiltered' => $count
            ])
            ->make(true);

Please note that all pasted data is publicly available.