【问题标题】:Laravel- datatables inline editing and use autocomplete for multitablesLaravel- 数据表内联编辑和多表使用自动完成
【发布时间】:2018-06-09 21:43:01
【问题描述】:

我有一个复杂的问题,我有一个包含数据的表,因为我正在使用数据表,表 Checks 与其他表 Vendors 有关系 我想要的只是单击单元格 vendor_id 使其可编辑并使用自动完成功能来填充或编辑当前数据。 我希望表格可以像这个例子一样编辑 https://editor.datatables.net/examples/inline-editing/simple

my table screenshot

检查表:

详情 说明

vendor_id

供应商表

vendor_id

供应商名称

现在供应商的名称出现在数据表中,但不知道为什么它的括号内和“” [{"vendor_name":"Raul"}] 所以我只想显示 vendor_name 并使用自动完成对其进行编辑,并通过存储 vendor_id 而不是供应商名称将其存储在检查表中

阿贾克斯

          var oTable = $('#users-table').DataTable({
            dom: 'flBrtip',   
            stateSave: true,
            paging:     true,
            pagingType: 'simple_numbers',
            processing: true,
            serverSide: true,
            ajax: {
                 url: 'custom-filter-data',
                    data: function(d) {
                          d.start_date = $('input[name=start_date]').val();
                           d.end_date = $('input[name=end_date]').val();
                         }
                         },
         columns : [
       {data: 'details', name: 'details'},
          {data: 'description', name: 'description'},
           {data: 'vendor_id',name:'vendor_id'},
          {data: 'category_id',name: 'category_id'},
        ],
         pageLength: 10,

        });
    oTable.draw();

控制器

   public function getCustomFilterData()
   {
  $arrStart = explode("/", Input::get('start_date'));
      $arrEnd = explode("/", Input::get('end_date'));
      $start = Carbon::create($arrStart[2], $arrStart[0], $arrStart[1], 0, 0, 0);
      $end = Carbon::create($arrEnd[2], $arrEnd[0], $arrEnd[1], 23, 59, 59);

    $orders = Checks::between($start, $end);
  return Datatables::of($orders)->editColumn('vendor_id', function ($user) 
    {
       $vendor =Vendors::select('vendor_name')->where('vendor_id',$user->vendor_id)->get();
     return ( $vendor);
   }) ->make( TRUE );
  }

【问题讨论】:

  • 不应该是whereBetween() 而不是between()吗?
  • 不,日期工作正常,之间没有问题,但我询问如何使数据表可编辑并且单元格具有自动完成功能

标签: php laravel datatable autocomplete


【解决方案1】:

您正在使用->get();,它返回和数组,因此[] 如果您只想要一列(vendor_name),请这样写。

$vendor =Vendors::where('vendor_id',$user->vendor_id)->first();
return $vendor ? $vendor->vendor_name : '';

get 和 first 差异说明:https://laravel.com/docs/5.5/queries#retrieving-results

【讨论】:

  • $vendor =Vendors::where('vendor_id',$user->vendor_id)->first();返回 (@$vendor->vendor_name);
  • 确实是更好的打字方式
  • 你在说什么问题?
  • 如何使供应商的单元格可编辑和自动完成
  • 我猜你需要检查editor.datatables.net/examples/inline-editing/simple。自动完成可能有点棘手,因为您可能必须使用像 select2 这样的 3rd 方插件
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-02
  • 1970-01-01
  • 1970-01-01
  • 2015-11-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多