راکت

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

12 پاسخ

@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)
1masoud
1masoud
@masoudproton
ثبت پرسش جدید

پاسخ‌ها

12
علی بیات
علی بیات
@ali.bayat

تخصص: توسعه دهنده ارشد وب

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

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

تخصص: php,laravel

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

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

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

شاید پاسخ شما همین‌جا باشد

علی بیات
علی بیات
@ali.bayat

تخصص: توسعه دهنده ارشد وب

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

  'strict' => false,
1masoud
1masoud
@masoudproton

تخصص: php,laravel

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

1masoud
1masoud
@masoudproton

تخصص: php,laravel

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

علی بیات
علی بیات
@ali.bayat

تخصص: توسعه دهنده ارشد وب

mahdi khanzadi
mahdi khanzadi
@khanzadimahdi

تخصص: Software engineer

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

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

تخصص: php,laravel

@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
1masoud
@masoudproton

تخصص: php,laravel

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

mahdi khanzadi
mahdi khanzadi
@khanzadimahdi

تخصص: Software engineer

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

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

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

TEFO
TEFO
@tefo.ha27

تخصص: لاراول

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

تخصص: php,laravel

@khanzadimahdi
@ali.bayat

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

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

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