Laravel-datatables: Kesalahan Pencarian Parameter salah dalam panggilan ke fungsi asli 'LOWER'

Dibuat pada 21 Des 2016  ·  13Komentar  ·  Sumber: yajra/laravel-datatables

Halo semuanya,
Saya menggunakan "yajra/laravel-datatables-oracle": "^6.3" dan laravel 5.2.

Semuanya baik-baik saja dengan mendaftar datatables tetapi ketika saya mulai mencari saya mendapatkan kesalahan

SQLSTATE[42000]: Syntax error or access violation: 1583 Incorrect parameters in the call to native function 'LOWER' ...

Ini kode php saya

public function index(Request $request){

         $items = DB::table('items as it')->select('it.*','c.name as category') 
                                             ->join('category as c', 'it.category_id', '=', 'c.id');
        $datatables = Datatables::of($items) 
                        ->addColumn('no', function ($items) { return ''; }));

        if ($keyword = $request->get('search')['value']) {
            $datatables->filterColumn('name', 'whereRaw', "items.name like ? ", ["%$keyword%"]);
            $datatables->filterColumn('category', 'whereRaw', "category.name like ? ", ["%$keyword%"]);
        }
        return $datatables->make(true);
}

Ini javascript saya

$('#items_table').DataTable({
    processing: true,
    serverSide: true,
    iDisplayLength: 25,
    'responsive': true,
    'language' : {
      "sSearchPlaceholder": "Search..",
      "lengthMenu": "_MENU_",
      "search": "_INPUT_",
      "paginate": {
        "previous"  : '<i class="icon md-chevron-left"></i>',
        "next"      : '<i class="icon md-chevron-right"></i>'
      }
    }, 
    order: [[ 1, "asc" ]],
    ajax: {
      url  :  'items/index',
      type : "POST",
      data : function (d) {}
    },
    columns: [
      { data: 'no', orderable: false, bSearchable: false },
      { data: 'name', name: 'name' },
      { data: 'category', name: 'category' },
    ],
    "fnRowCallback" : function(nRow, aData, iDisplayIndex){
        // For auto numbering at 'No' column
        var start = tbl.page.info().start;
        $('td:eq(0)',nRow).html(start + iDisplayIndex + 1);
    },
  });

Tolong bantu aku.
Terima kasih!

need feedback

Komentar yang paling membantu

@seven9 , saya baru saja mendapatkan masalah yang sama, tetapi akhirnya menyelesaikannya. Perbaikannya ada di JS saya.
Saya memastikan properti kolom cocok dengan alias dan kolom sebenarnya.

Menggunakan contoh Anda:
data: 'name', name: 'name'
data: 'category', name: 'category'

nilai data : _alias_
nama-nilai : _kolom aktual_

mencoba:
data: 'name', name: 'it.name'
data: 'category', name: 'c.name'

Semua 13 komentar

@seven9 sudahkah Anda mencoba memperbarui ke versi stabil terbaru v6.22.5 ?

Hai @yajra ,

Saya sudah memperbarui dan mencobanya. Masalah itu terjadi ketika saya menggunakan tabel alias seperti
DB::table('items as it') dan bergabunglah dengan banyak talbe dengan pembuat kueri laravel.

Terima kasih..

@seven9 , saya baru saja mendapatkan masalah yang sama, tetapi akhirnya menyelesaikannya. Perbaikannya ada di JS saya.
Saya memastikan properti kolom cocok dengan alias dan kolom sebenarnya.

Menggunakan contoh Anda:
data: 'name', name: 'name'
data: 'category', name: 'category'

nilai data : _alias_
nama-nilai : _kolom aktual_

mencoba:
data: 'name', name: 'it.name'
data: 'category', name: 'c.name'

Terima kasih @jedknyt dan perbaikan yang bagus.

@jedknyt Anda telah menyelamatkan saya banyak waktu bro

@jedknyt terima kasih telah berbagi solusi. 👍

Pertanyaan

$sales = \DB::table('driver_ride_transactions as drt')
            ->join('bookings', 'bookings.id', '=', 'drt.booking_id')
            ->join('businesses', 'businesses.id', '=', 'bookings.business_id')
            ->leftJoin('users as driver_u', 'drt.user_id', '=', 'driver_u.id')
            ->leftJoin('users as app_u', 'bookings.user_id', '=', 'app_u.id')
            ->select('drt.id', 'drt.status', 'driver_u.first_name as driver_name', 'app_u.first_name as app_user_name', 'businesses.name as destination', 'drt.created_at');

Kode Javascript

$('#sales-table').DataTable({
            processing: true,
            serverSide: true,
            order: [ [4, 'desc'] ],
            ajax: '{{ route('admin:fetch:ride:transactions') }}',
            columns: [
                {data: 'id', name: 'drt.id'},
                {data: 'destination', name: 'destination'},
                {data: 'driver_name', name: 'driver_name'},
                {data: 'app_user_name', name: 'app_user_name'},
                {data: 'created_at', name: 'drt.created_at'},
                {data: 'status', name: 'drt.status'}
            ]
        });

Semuanya berfungsi dengan baik, tetapi Masih mendapatkan kesalahan ini saat mencari _Kesalahan Pencarian Parameter salah dalam panggilan ke fungsi asli 'LOWER'_
screen shot 2017-11-24 at 12 51 06 pm

Apa yang saya lewatkan? @yajra @jedknyt ?

@siddharthghedia karena Anda menggunakan join, saya pikir Anda harus memasukkan nama tabel juga di setiap kolom dan hindari menggunakan alias pada nilai name . Gunakan nilai kolom yang sebenarnya.

columns: [
                {data: 'id', name: 'drt.id'},
                {data: 'destination', name: 'drt.destination'},
                {data: 'driver_name', name: 'driver_u.first_name'},
                {data: 'app_user_name', name: 'app_u.first_name'},
                {data: 'created_at', name: 'drt.created_at'},
                {data: 'status', name: 'drt.status'}
            ]

@yajra Terima kasih banyak telah menjawab, saya mencoba kode yang sama yang Anda tulis, tetapi masih memberi saya kesalahan yang sama dan Anda meminta untuk tidak menggunakan alias pada name kan? Tapi di sini driver_u dan app_u sudah merupakan alias. Bagaimana saya bisa menyelesaikannya? Terima kasih sebelumnya.

Halo @siddharthghedia , saya memiliki masalah yang sama, apakah Anda punya solusi.
Terima kasih sebelumnya.

Itu banyak membantu saya, saya memecahkan masalah ... terima kasih telah berbagi solusinya

@siddharthghedia karena Anda menggunakan join, saya pikir Anda harus memasukkan nama tabel juga di setiap kolom dan hindari menggunakan alias pada nilai name . Gunakan nilai kolom yang sebenarnya.

columns: [
                {data: 'id', name: 'drt.id'},
                {data: 'destination', name: 'drt.destination'},
                {data: 'driver_name', name: 'driver_u.first_name'},
                {data: 'app_user_name', name: 'app_u.first_name'},
                {data: 'created_at', name: 'drt.created_at'},
                {data: 'status', name: 'drt.status'}
            ]

TI bekerja untuk saya. Terima kasih banyak

@siddharthghedia karena Anda menggunakan join, saya pikir Anda harus memasukkan nama tabel juga di setiap kolom dan hindari menggunakan alias pada nilai name . Gunakan nilai kolom yang sebenarnya.

columns: [
                {data: 'id', name: 'drt.id'},
                {data: 'destination', name: 'drt.destination'},
                {data: 'driver_name', name: 'driver_u.first_name'},
                {data: 'app_user_name', name: 'app_u.first_name'},
                {data: 'created_at', name: 'drt.created_at'},
                {data: 'status', name: 'drt.status'}
            ]

Ini bekerja untuk saya. Terima kasih banyak

Apakah halaman ini membantu?
0 / 5 - 0 peringkat

Masalah terkait

kamrava picture kamrava  ·  3Komentar

jackrsantana picture jackrsantana  ·  3Komentar

alejandri picture alejandri  ·  3Komentar

techguydev picture techguydev  ·  3Komentar

SGarridoDev picture SGarridoDev  ·  3Komentar