2017-12-29 21 views
0

ich ein kompliziertes Problem, ich habe eine Tabelle, die Daten enthält als Im Datentabelle verwenden, Tabelle Checks Beziehung mit anderen Tabelle Vendors , was ich will nur, wenn Klick auf Zelle Vendor_ID machen Sie es editierbar und verwenden Sie die Autocomplete-Funktion, um aktuelle Daten zu füllen oder zu bearbeiten. Ich möchte Tabelle wie in diesem Beispiel https://editor.datatables.net/examples/inline-editing/simpleLaravel- Tables Inline-Bearbeitung und Verwendung der automatischen Vervollständigung für Multitables

my table screenshot

Prüftabelle editierbar sein:

Details Beschreibung

VENDOR_ID

Vendors Tabelle:

VENDOR_ID

vendor_name

jetzt der Name des Anbieters in der Datentabelle angezeigt wird, aber nicht wissen, warum seine in Klammern und "" [{ "vendor_name": "Raul"}] so Alles, was ich will nur vendor_name zeigen und bearbeiten die automatische Vervollständigung verwenden und es in der Prüftabelle speichern durch speichern vendor_id nicht hersteller~~POS=TRUNC

Ajax

  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(); 

-Controller

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); 
    } 
+0

Sollte es nicht sein 'zwischen denen()' 'statt zwischen()'? –

+0

nein das Datum funktioniert gut, ohne Probleme soe zwischen funktioniert, aber ich frage, wie Datatable bearbeitbar machen und Zellen haben automatische Vervollständigung Funktion –

Antwort

0

Sie verwenden ->get(); die und Array zurückgibt und damit die [] Wenn Sie nur eine Spalte (vendor_name) möchten schreiben Sie es so.

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

Erklärung der get und erste Unterschiede: https://laravel.com/docs/5.5/queries#retrieving-results

+0

$ vendor = Lieferanten :: wo ('vendor_id', $ user-> vendor_id) -> zuerst(); Rückgabe (@ $ Hersteller-> Kreditor_Name); –

+0

Das ist in der Tat eine bessere Art, es einzugeben –

+0

ok was ist mit dem anderen Problem bitte? –

Verwandte Themen