راکت
حل شده

متد chunk در laravel

14 پاسخ

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

ثبت پرسش جدید

پاسخ‌ها

14
سبحان مولایی
سبحان مولایی
@websaz

تخصص: برنامه‌نویس وب: Python :: Django :: Node :: Php :: Laravel :: JS :: React :: React Native

بهترین پاسخ

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

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

@MM20001378

سبحان مولایی
سبحان مولایی
@websaz

تخصص: برنامه‌نویس وب: Python :: Django :: Node :: Php :: Laravel :: JS :: React :: React Native

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

@MM20001378

مهدی
مهدی
@MM20001378

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

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

سبحان مولایی
سبحان مولایی
@websaz

تخصص: برنامه‌نویس وب: Python :: Django :: Node :: Php :: Laravel :: JS :: React :: React Native

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

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

@MM20001378

مهدی
مهدی
@MM20001378

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

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

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

سبحان مولایی
سبحان مولایی
@websaz

تخصص: برنامه‌نویس وب: Python :: Django :: Node :: Php :: Laravel :: JS :: React :: React Native

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

مهدی
مهدی
@MM20001378

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

سبحان مولایی
سبحان مولایی
@websaz

تخصص: برنامه‌نویس وب: Python :: Django :: Node :: Php :: Laravel :: JS :: React :: React Native

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

مهدی
مهدی
@MM20001378
مهدی
مهدی
@MM20001378

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

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

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

سبحان مولایی
سبحان مولایی
@websaz

تخصص: برنامه‌نویس وب: Python :: Django :: Node :: Php :: Laravel :: JS :: React :: React Native

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

مهدی
مهدی
@MM20001378

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

سبحان مولایی
سبحان مولایی
@websaz

تخصص: برنامه‌نویس وب: Python :: Django :: Node :: Php :: Laravel :: JS :: React :: React Native

خواهش می کنم.

مهدی
مهدی
@MM20001378

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

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

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