Amir Alsaeed نشر 5 مارس 2021 أرسل تقرير نشر 5 مارس 2021 عند تنفيذي للاستعلام التالي في لارافيل: $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) اقتباس
1 Sam Ahw نشر 5 مارس 2021 أرسل تقرير نشر 5 مارس 2021 إنك تحوال جمع 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'); 1 اقتباس
0 بلال زيادة نشر 5 مارس 2021 أرسل تقرير نشر 5 مارس 2021 يمكنك في ملف 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' ], 1 اقتباس
السؤال
Amir Alsaeed
عند تنفيذي للاستعلام التالي في لارافيل:
$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)
2 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.