1masoud
5 سال پیش توسط 1masoud مطرح شد
12 پاسخ

ارور در elquent لاراول

@Alimotreb @ali.bayat @khanzadimahdi

چرا از groupbyیراد میگیره

 $channel = \App\DetailsModel::groupBy('link')->whereNotNull('name_channel')->take(5)->orderBy(DB::raw('RAND()'))->get();

, ارورش اینه

SQLSTATE[42000]: Syntax error or access violation: 1055 'curl.details.id' isn't in GROUP BY (SQL: select * from `details` where `name_channel` is not null group by `link` order by RAND() asc limit 5) (View: /home/netwons/PhpstormProjects/untitled1/resources/views/index.blade.php) (View: /home/netwons/PhpstormProjects/untitled1/resources/views/index.blade.php)

ثبت پرسش جدید
علی بیات
تخصص : توسعه دهنده ارشد وب
@ali.bayat 5 سال پیش مطرح شد
0

درود
به شکل زیر کوئری رو تغییر بده ببین فرقی میکنه:

$channelData = \App\DetailsModel::whereNotNull('name_channel')
    ->take(5)
    ->orderBy(DB::raw('RAND()'))
    ->get();
$channel = $channelData->groupBy('link');

1masoud
تخصص : php,laravel
@masoudproton 5 سال پیش مطرح شد
0

@ali.bayat
این ارور رو میده

Property [name_channel] does not exist on this collection instance. (View: 

در صورتی که name_channel موجود هست


علی بیات
تخصص : توسعه دهنده ارشد وب
@ali.bayat 5 سال پیش مطرح شد
0

کوئری رو به حالت قبلش برگردون.
فایل config/database.php رو باز کن
connection -> mysql

  'strict' => false,

1masoud
تخصص : php,laravel
@masoudproton 5 سال پیش آپدیت شد
0

@ali.bayat
انجام دادم نشد


1masoud
تخصص : php,laravel
@masoudproton 5 سال پیش مطرح شد
0

@ali.bayat
راه دیگه نداره


علی بیات
تخصص : توسعه دهنده ارشد وب
@ali.bayat 5 سال پیش مطرح شد
mahdi khanzadi
تخصص : Software engineer
@khanzadimahdi 5 سال پیش مطرح شد
0

سلام. از (DB::raw('RAND()')) استفاده نکنید! کدشو به صورت زیر تغییر بدید

 $channel = \App\DetailsModel::groupBy('link')->whereNotNull('name_channel')->take(5)->inRandomOrder()->get();

1masoud
تخصص : php,laravel
@masoudproton 5 سال پیش آپدیت شد
0

@khanzadimahdi @ali.bayat @Alimotreb
این ارور رو میده

SQLSTATE[42000]: Syntax error or access violation: 1055 'curl.details.id' isn't in GROUP BY (SQL: select * from `details` where `name_channel` is not null group by `link` order by RAND() limit 5) (View: /home/netwons/PhpstormProjects/untitled1/resources/views/index.blade.php) (View: /home/netwons/PhpstormProjects/untitled1/resources/views/index.blade.php)

1masoud
تخصص : php,laravel
@masoudproton 5 سال پیش مطرح شد
0

@khanzadimahdi
این مشکل من حل نشد


mahdi khanzadi
تخصص : Software engineer
@khanzadimahdi 5 سال پیش مطرح شد
0

حالت زیر رو تست کنید

$channel = \App\DetailsModel::select('link')->groupBy('link')->whereNotNull('name_channel')->take(5)->inRandomOrder()->get();

همچنین فایل config/database.php رو باز کن
connection -> mysql حالت strict رو false بزار


TEFO
تخصص : لاراول
@tefo.ha27 5 سال پیش مطرح شد
0
$channelData = \App\DetailsModel::whereNotNull('name_channel')
    ->groupBy('link')
    ->take(5)
    ->orderBy(DB::raw('RAND()'))
    ->get();

1masoud
تخصص : php,laravel
@masoudproton 5 سال پیش آپدیت شد
0

@khanzadimahdi
@ali.bayat

الان درسته اما خالی بودن name_channel اجرا نمیشه
و یک نکته ای من می خوام توی هر name_channel بیاد 5 تا لینک هم چاپ کنه
@khanzadimahdi


برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام