【问题标题】:Laravel Eloquent Query To Display Data In Datatable For Each ID In Respective RowLaravel Eloquent 查询在数据表中为每个 ID 显示相应行中的数据
【发布时间】:2020-07-23 02:58:11
【问题描述】:

Hey Stack Overflow 社区,

我需要有关如何解决我遇到的这个问题的指导。为了清楚起见,我在下面添加了我当前数据表的图像:

我想要做的是,我的表格应该按表格标题的顺序显示每个“客户”。例如,对于拥有 Customer3 和 Customer1 的“Ferb”,显示了两个数据。我想要的是让 customer1 转到“0002”列,而不是完全创建一个新行。

下面是我的功能代码:

   public function monitorStatAjax(Request $request){

    $monitor_date= strtr($request->monitor_date, '/', '-');
    $new_monitor_date = date("Y-m-d", strtotime($monitor_date))." 00:00:00";

    $service_calls = ServiceCall::where('appointment_date', $new_monitor_date)
    ->join('users', 'service_calls.staff_id', '=', 'users.id')
    ->join('customers', 'service_calls.company_id', '=', 'customers.id')
    ->join('servicecall_staff_statuses', 'service_calls.id', '=', 'servicecall_staff_statuses.servicecall_id')
    ->join('statuses', 'statuses.id', '=', 'users.status')
    ->select('service_calls.id as service_id','servicecall_staff_statuses.servicecall_appointment_time as appointment_time',
    'customers.name as company_name','users.name as staff_name','servicecall_staff_statuses.work_status as work_status','statuses.title as status_name')
    ->orderBy('service_calls.id', 'asc')->get();

    return DataTables::of($service_calls)
    ->addColumn('staff_name', function($data1) {
        return $data1->staff_name.' ('.$data1->status_name.')';
    })
    ->addColumn('0001', function ($data1) use($service_calls) {
        if ($data1->work_status == null)
        {

            return $data1->company_name.' <ul id="menu" style="display:flex">  
                    <li style="margin: 0px 8px 0px -30px;"><span class="redstatus"></span></li>
                    </ul> ';
        }
        elseif ($data1->work_status == 1)
        {
            return $data1->company_name.' <ul id="menu" style="display:flex">
            <li style="margin: 0px 8px 0px -30px;"><span class="completestatus"></span></li>
            <li>Completed</li>
            </ul> ';
        }
        elseif ($data1->work_status == 2)
        {
            return $data1->company_name.' <ul id="menu" style="display:flex">
            <li style="margin: 0px 8px 0px -30px;"><span class="followupstatus"></span></li>
            <li style="white-space:nowrap">Follow Up</li>
            </ul> ';
        }
        else
        {
            return $data1->company_name.' <ul id="menu" style="display:flex">
            <li style="margin: 0px 8px 0px -30px;"><span class="yellowstatus"></span></li>
            </ul> ';
        }
    })
    ->rawColumns(['0001'])
        ->make(true);
}

我的数据表 Ajax 代码:

    $(function () {
    var table = $('#table').DataTable({
        dom: 'Bfrtip',
        buttons: [
            'copy', 'csv', 'excel', 'pdf', 'print'
        ],
        processing: true,
        serverSide: true,
        ajax: {
            headers: {
            'X-CSRF-TOKEN': "{{ csrf_token() }}"
            },
            url: '{!! route("admin.monitor.stat.ajax") !!}',
            type:"POST",
            data: { monitor_date: "{{$new_monitor_date}}",
        },
        },
        order: [[0, "desc"]],
        columns: [
            {data: 'staff_name', name: 'staff_name'},
            {data: '0001', name: '0001'},
        ],
    });
});

希望得到一些反馈。谢谢。

【问题讨论】:

    标签: php laravel eloquent datatables yajra-datatable


    【解决方案1】:

    我自己设法做到了。经过数小时的研究,几乎没有发现如何做到这一点的线索,我决定采取不同的方法。对于任何有同样问题的人,我就是这样做的。

    我的桌子是静态的。我的表不会超过 0010,所以我知道我必须让它保持 10 列不变。我创建了一个名为“monitor”的新表,并用它自己的外部 id 引用了每一列。之后,它就像返回具有自己唯一名称的数据表列一样简单。

    【讨论】:

      猜你喜欢
      • 2018-11-11
      • 2015-06-24
      • 1970-01-01
      • 1970-01-01
      • 2017-05-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多