首页 > 解决方案 > 我想从控制器中的 ajax 请求到模块中生成具有其值的新列

问题描述

这是我的控制器中的 ajax 请求:

public function dtajax()
    {
         $users = User::all();

          $users =  DB::table('tc_users')
            ->join('users_tc_users','users_tc_users.tc_users_id', '=','tc_users.id')
            ->join('users','users.id', '=','users_tc_users.users_id') 
            ->leftJoin('cars','cars.users_id', '=','users.id')
            ->groupBy('users.id')
            ->select(DB::raw("users.id as id ,  users.name as name , users.email as email ,  users.Expiration_Date as Expiration_Date , users.phone_number as phone_number ,users.allowedcar as allowedcar ,COUNT(cars.id) as cars_count  "))
            ->get(array("users.id as id ,  users.name as name , users.email as email ,  users.Expiration_Date as Expiration_Date , users.phone_number as phone_number ,users.allowedcar as allowedcar,COUNT(cars.id) as cars_count "));
foreach ($users as $user){
    echo $user->cars_count;
}
        $values = DB::table('users')->select($this->listing_cols)->whereNull('deleted_at');
        $out = Datatables::of($values)->make();
        $data = $out->getData();

        $fields_popup = ModuleFields::getModuleFields('Users');

        for($i=0; $i < count($data->data); $i++) {
            for ($j=0; $j < count($this->listing_cols); $j++) { 
                $col = $this->listing_cols[$j];
                //  $this->listing_cols->kk;
                                // echo $col['no_of_cars'];

                if($fields_popup[$col] != null && starts_with($fields_popup[$col]->popup_vals, "@")) {
                    $data->data[$i][$j] = ModuleFields::getFieldValue($fields_popup[$col], $users, $data->data[$i][$j]);
                    // $data->data[$i][$j] .=  'yssss';
                }
                if($col == $this->view_col) {

                    $data->data[$i][$j] = '<a href="'.url(config('laraadmin.adminRoute') . '/users/'.$data->data[$i][0]).'">'.$data->data[$i][$j].'</a>';
                }
                // else if($col == "author") {
                //    $data->data[$i][$j];
                // }
            }


            if($this->show_action) {
                $output = '';
                if(Module::hasAccess("Users", "edit")) {
                    $output .= '<a href="'.url(config('laraadmin.adminRoute') . '/users/'.$data->data[$i][0].'/edit').'" class="btn btn-warning btn-xs" style="display:inline;padding:2px 5px 3px 5px;"><i class="fa fa-edit"></i></a>';
                }

                if(Module::hasAccess("Users", "delete")) {
                    $output .= Form::open(['route' => [config('laraadmin.adminRoute') . '.users.destroy', $data->data[$i][0]], 'method' => 'delete', 'style'=>'display:inline']);
                    $output .= ' <button class="btn btn-danger btn-xs" type="submit"><i class="fa fa-times"></i></button>';
                    $output .= Form::close();
                }

                $data->data[$i][] = (string)$output;
            }

        }
        $out->setData($data);

        return $out;
    }

这就是前面的ajax函数:

$(function () {
    $("#example1").DataTable({
        processing: true,
        serverSide: true,
        ajax: "{{ url(config('laraadmin.adminRoute') . '/user_dt_ajax') }}",
        language: {
            lengthMenu: "_MENU_",
            search: "_INPUT_",
            searchPlaceholder: "Search"
        },
        @if($show_actions)
        columnDefs: [ { orderable: false, targets: [-1] }],
        @endif
    });
    $("#user-add-form").validate({

    });
});
</script>

我想要的只是添加一个名为的新列cars_count并从上面的选择查询中插入它的值,我可以通过

 foreach ($users as $user){
    echo $user->cars_count;
}     

我无法从视图中填充表格,因为它是由基本数据从 ajax 请求中填充的

标签: laravel-5laraadmin

解决方案


推荐阅读