راکت

کار با Transactions و event در لاراول

1 پاسخ

سلام.فرض کنید بنده یک کاربر به سایتم اضافه میکنم.بعد از ایجاد کاربر باید در چند جدول دیگه هم رکورد تعریف شه.مثلا دسترسی های کاربر و ...

من میتونم همه این کوئری ها رو تو یه Transactions هندل کنم تا اگر در هر مرحله به مشکل خورد کل فرایند لغو بشه و ارور برگردونه.

اما نمیخوام همه این موارد تو کنترلر ایجاد کاربر انجام شه.میخوام موارد مربوط به ایجاد سطوح دسترسی کاربر و ... رو با event ها هندل کنم.

به شکل زیر:

  try {
            DB::beginTransaction();

            $newUser = User::create([
                'name' => $companyName
                , 'activityType' => $activityType
                , 'city' => $city
                , 'level_id' => $plan
                , 'created_at' => Carbon::now()
            ]);

            event(new UserCreated($newUser));

            DB::commit();
            return response()->json('ok');
        } catch (Exception $exception) {
            DB::rollBack();
            Log::error($exception);
            return response()->json('error');
        }

من میخوام اگر listener تو ایجاد سطوح دسترسی به مشکل خورد ، خود کاربر هم ایجاد نشه اصلا.

ممنون میشم راهنمایی کنید

ثبت پرسش جدید

پاسخ‌ها

1
نیما نوری
نیما نوری
@NimaN2D

میتونید جاب تعریف کنید که در زمان فیلد شدن ، کارهای پاک کردن رو انجام بده ولی طبیعتا بهترین روش همین ترنزکشن هست که میتونید به یک جاب واحد الصاق کنید

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

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

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