مرحبا جميعا،
أستخدم "yajra/laravel-datatables-oracle": "^6.3"
و laravel 5.2.
كل شيء على ما يرام مع سرد جداول البيانات ولكن عندما أبدأ البحث أحصل على الخطأ
SQLSTATE[42000]: Syntax error or access violation: 1583 Incorrect parameters in the call to native function 'LOWER' ...
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);
}
$('#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);
},
});
ساعدني من فضلك.
شكرا!
@ Seven9 هل حاولت التحديث إلى أحدث إصدار مستقر v6.22.5
؟
مرحبا yajra ،
لقد قمت بالفعل بتحديثه وجربته. تحدث هذه المشكلة عندما أستخدم الاسم المستعار للجدول مثل
DB::table('items as it')
وانضم إلى العديد من Talbes باستخدام منشئ استعلام Laravel.
شكرا..
@ Seven9 ، لقد حصلت للتو على نفس المشكلة ، لكنني قمت بحلها في النهاية. كان الإصلاح في JS الخاص بي.
لقد تأكدت من تطابق خصائص العمود مع الاسم المستعار والأعمدة الفعلية.
باستخدام المثال الخاص بك:
data: 'name', name: 'name'
data: 'category', name: 'category'
قيمة البيانات : _alias_
اسم القيمة : _ العمود الفعلي_
محاولة:
data: 'name', name: 'it.name'
data: 'category', name: 'c.name'
شكرا @ jedknyt وإصلاح لطيف.
jedknyt لقد وفرت لي الكثير من الوقت يا
jedknyt شكرا لتقاسم الحل. 👍
استفسار
$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');
كود جافا سكريبت
$('#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'}
]
});
كل شيء يعمل بشكل مثالي ، ولكن لا يزال يتم الحصول على هذا الخطأ أثناء البحث _ خطأ في البحث معلمات غير صحيحة في استدعاء الوظيفة الأصلية "LOWER "_
ماذا ينقصني؟ yajrajedknyt؟
siddharthghedia نظرًا لأنك تستخدم الانضمام ، أعتقد أنه يجب عليك تضمين اسم الجدول أيضًا في كل عمود وتجنب استخدام الاسم المستعار على قيم name
. استخدم قيمة العمود الفعلية.
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 شكرًا جزيلاً على الرد ، لقد جربت نفس الكود الذي كتبته ، لكن ما زلت أعطاني نفس الخطأ وطلبت عدم استخدام الاسم المستعار على name
أليس كذلك؟ ولكن هنا driver_u
و app_u
هي الأسماء المستعارة بالفعل. كيف يمكنني حلها؟ شكرا لكم مقدما.
مرحبًا siddharthghedia ، لدي نفس المشكلة ، هل لديك أي حل.
شكرا لكم مقدما.
لقد ساعدتني كثيرًا ، لقد قمت بحل المشكلة ... شكرًا لمشاركة الحل
siddharthghedia نظرًا لأنك تستخدم الانضمام ، أعتقد أنه يجب عليك تضمين اسم الجدول أيضًا في كل عمود وتجنب استخدام الاسم المستعار على قيم
name
. استخدم قيمة العمود الفعلية.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'} ]
يعمل ذلك بالنسبة لي. شكرا جزيلا
siddharthghedia نظرًا لأنك تستخدم الانضمام ، أعتقد أنه يجب عليك تضمين اسم الجدول أيضًا في كل عمود وتجنب استخدام الاسم المستعار على قيم
name
. استخدم قيمة العمود الفعلية.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'} ]
إنه يعمل بالنسبة لي. شكرا جزيلا لك
التعليق الأكثر فائدة
@ Seven9 ، لقد حصلت للتو على نفس المشكلة ، لكنني قمت بحلها في النهاية. كان الإصلاح في JS الخاص بي.
لقد تأكدت من تطابق خصائص العمود مع الاسم المستعار والأعمدة الفعلية.
باستخدام المثال الخاص بك:
data: 'name', name: 'name'
data: 'category', name: 'category'
قيمة البيانات : _alias_
اسم القيمة : _ العمود الفعلي_
محاولة:
data: 'name', name: 'it.name'
data: 'category', name: 'c.name'