اذهب إلى المحتوى

السؤال

نشر

عند تنفيذي للاستعلام التالي في لارافيل:

$load_id=explode("#@*",$answers->loading_id);

$loading_data=DB::table('loading')->groupBy('answer_no')->whereIn('id',$load_id)->get();

يظهر الخطأ التالي:

SQLSTATE[42000]: Syntax error or access violation: 1055 'sbrtpt.loading.id' isn't in GROUP BY (SQL: select * from loading where id in (14, 15, 16) group by answer_no)

 

Recommended Posts

  • 1
نشر

إنك تحوال جمع group by عامود واحد في الجدول. الحل المختصر للمشكلة بالتوجه إلى ملف config\database.php وتعديل التالي:

'strict' => false

وبذلك يمكنك إجراء group by بدون ظهور هذه المشكلة في حال كان هذا الاستعلام الوحيد الذي يمكنك القيام به ولا يوجد بديل له.

أو يمكنك تعديل نفس الملف كالتالي:

'mysql' => [
       ...
       ....
       'strict' => true,
       'modes' => [
            //'ONLY_FULL_GROUP_BY', // الغاء هذه الخاصية سيسمح لك بالجمع عن طريق عمود واحد
            'STRICT_TRANS_TABLES',
            'NO_ZERO_IN_DATE',
            'NO_ZERO_DATE',
            'ERROR_FOR_DIVISION_BY_ZERO',
            'NO_AUTO_CREATE_USER',
            'NO_ENGINE_SUBSTITUTION'
        ],
 ]

ولكن من غير المرجّح تغيير القيمة 'strict' => false لضرورات أمنية في لارافيل ولتجنب بقية المشاكل في المستقبل.

لذلك، يمكنك فصل الاستعلام السابق إلى مرحلتين عن طريق اجراء get() أولاً، ثم groupBy('answer_no) كالتالي:

$load_id = explode("#@*", $answers->loading_id);
$loading_data = DB::table('loading')->whereIn('id', $load_id)->get();
$grouped = $loading_data->groupBy('answer_no');

 

  • 0
نشر

يمكنك في ملف config/database .php  في مصفوفة mysql تغيير قيمة strict إلى false. 

أو ترك قيمة strict في نفس الملف إلى true مع وضع تحتها 

'modes' => [
	'STRICT_TRANS_TABLES',
	'NO_ZERO_IN_DATE',
	'NO_ZERO_DATE',
	'ERROR_FOR_DIVISION_BY_ZERO',
	'NO_AUTO_CREATE_USER',
	'NO_ENGINE_SUBSTITUTION'
],

 

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...