محسن
6 سال پیش توسط محسن مطرح شد
1 پاسخ

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

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

من میتونم همه این کوئری ها رو تو یه 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 تو ایجاد سطوح دسترسی به مشکل خورد ، خود کاربر هم ایجاد نشه اصلا.

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