مهدی
3 سال پیش توسط مهدی مطرح شد
14 پاسخ

متد chunk در laravel

سلام
من یه جدول دارم که 15000 رکورد داره که که این 15000 تا تعداد کاربران من هستن و role هرکدومشون 0 و حالا الان میخوام role تمام کاربران رو 1 کنم ولی با ارور Maximum execution time of 60 seconds exceeded مواجه میشم مشکل چیه ممنون ؟


ثبت پرسش جدید
سبحان مولایی
تخصص : برنامه‌نویس وب: Python ::...
@websaz 3 سال پیش مطرح شد
0

در خط دوم از این کد استفاده کنید.

 $categories->toBase()->duplicates('name')

@MM20001378


سبحان مولایی
تخصص : برنامه‌نویس وب: Python ::...
@websaz 3 سال پیش مطرح شد
0

سلام بدلیل تعداد بالای کاربران و منتظر ماندن لاراول برای mysql این فرایند بسیار طول می کشد.
می توانید از این فانکشن استفاده کنید.
سعی کنید ثانیه رو بسیار بالا قرار بدهید تا به این اررور برخورد نکنید.

@MM20001378


مهدی
@MM20001378 3 سال پیش مطرح شد
0

از chunk هم میشه استفاده کرد ؟
@websaz


سبحان مولایی
تخصص : برنامه‌نویس وب: Python ::...
@websaz 3 سال پیش آپدیت شد
0

دوست عزیز chunk برای collection ها هست و زیاد به کار شما ربطی ندارد اما می توانید استفاده کنید. مثلا :

\App\Models\User::all()->each(function ($user) {
    /* Do something */
});

@MM20001378


مهدی
@MM20001378 3 سال پیش مطرح شد
0

یه سوال دیگه داشتم اون این هستش که وقتی از دیتابیس اطلاعاتم رو میگیرم به این شکل برمیگردونه
توضیح تصویر رو وارد کنید

ولی وقتی خودم یک کالکشن میسازم به این شکل نشون میده
توضیح تصویر رو وارد کنید

واین خیلی جاها مشکل ساز میشه مثال زمانی که من میخوام از duplicates استفاده کنم توی عکس اول هیچی برنمیگردونه ولی توی عکس دوم که کالکشن به اون شکل هست خیلی راحت مقادیری که دوبار تکرار شدن رو برمیگردونه و من در واقع نمیدونم چجوری باید از داده هایی که از دیتابیس میان تعیین کنم که مثلا فیلد name کجاها دوبار تکرار شده
لطفا اگه کدی رو دارید برام قرار بدید ممنون
@websaz


سبحان مولایی
تخصص : برنامه‌نویس وب: Python ::...
@websaz 3 سال پیش مطرح شد
0

وقتی مثلا این کد را \App\Models\User::all() اجرا می کنید یک query دیتابیس به شما می دهد که مقداری که شما می خواهید هم در ان وجود دارد اما در collection این مقادیر وجود ندارد مثلا فانکشن save روی item اول.
اگر روی یک query متد toArray رو اجرا کنید می توانید به شکل یک array مشاهده کنید.
@MM20001378


مهدی
@MM20001378 3 سال پیش آپدیت شد
0

ببینید خب duplicates فقط رو collection ها اجرا میشه دیگه وقت من روی مثلا users هام که از دیتابیس اومده یک toArray بزنم اینا دیگه کاربرانم تبدیل به یه ارایه شدن و نمیتونم از متد duplicates استفاده کنم مشکل من اینجاست که چ با toArray چ بدون toarray نمیتونم از داخل داده هایی که از دیتابیس اومده تعیین کنم کدوماش دوبار تکرار شده
نمیدونم منظورمو فهمیدید یا ن ولی اگه متوجه نشدید بگید با عکس توضیح بدم
و ضمن اینکه بخوام سوالمو خیلی بهتر بیان کنم من میخوام از داده هایی که از دیتابیس میاد با استفاده از duplicates تعیین کنم کدوم داده ها دوبار تکرار شده اگر کدی برای این دارید خواهشا عکسشو برام بزارید ممنون
@websaz
@samanzdev


سبحان مولایی
تخصص : برنامه‌نویس وب: Python ::...
@websaz 3 سال پیش مطرح شد
0

یعنی شما داده تکراری در دیتابیس دارید؟؟؟
@MM20001378


مهدی
@MM20001378 3 سال پیش مطرح شد
مهدی
@MM20001378 3 سال پیش آپدیت شد
0

سوالم بیشتر اینه که چرا کار نمیکنه ؟

 $categories = Category::get();
        $categories = $categories->duplicates('name');
        return $categories;

این کد
توضیح تصویر رو وارد کنید
اینم عکس چیزی برمیگردونه در واقع هیچی برنمی گردونه
@websaz


سبحان مولایی
تخصص : برنامه‌نویس وب: Python ::...
@websaz 3 سال پیش مطرح شد
0

در خط دوم از این کد استفاده کنید.

 $categories->toBase()->duplicates('name')

@MM20001378


سبحان مولایی
تخصص : برنامه‌نویس وب: Python ::...
@websaz 3 سال پیش مطرح شد
0

دوست عزیز مشکل شما حل شد ؟ اگر حل شد لطفا بهترین پاسخ رو انتخاب کنید.ممنون.
@MM20001378


مهدی
@MM20001378 3 سال پیش مطرح شد
0

خییییلی ممنون بابت وقتی که گذاشتین
@websaz


سبحان مولایی
تخصص : برنامه‌نویس وب: Python ::...
@websaz 3 سال پیش مطرح شد
0

خواهش می کنم.


مهدی
@MM20001378 3 سال پیش مطرح شد
0

فقط ببخشید این tobase دقیقا چ کار میکنه؟
@websaz


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

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