laravel, mysql транзакция не работает после отката - PullRequest
0 голосов
/ 29 апреля 2020

Я выполняю вставку в 4 таблицы одновременно, используя laravel 5.8. Когда я отправляю неполную форму, она отображает ошибку таблицы, но при повторной попытке он покажет мне ошибку. вот код

try
        {
            $connection = DB::connection('mysql');
            $connection->beginTransaction();
            $userData = session()->get('registeruser_data');
            $userData->user_type = 'v';
            $userData->save();

            $personal_details= new PersonalDetail;
            $personal_details->site_user_id =$userData->id;
            $personal_details->save();

            $personal_bio= new PersonalBio;
            $personal_bio->site_user_id =$userData->id;
            $personal_bio->save();


            $partner_details= new PartnerDetail;
            $partner_details->site_user_id =$userData->id;
            $partner_details->save();

            $personal_img= new PersonalImage;
            $personal_img->site_user_id =$userData->id;
            $personal_img->save();

            $connection->commit();
            session(['siteuser' => $userData->id]);
            return redirect('/edit/profile');
            // dd($charge);

        }
        catch(Exception $ex)
        {
            $connection->rollBack();
            return redirect::back()->withErrors(['stripe'=>$ex->getMessage()]);
        }

1 Ответ

0 голосов
/ 29 апреля 2020

сначала проверьте внешний ключ

$ userData - это коллекция, так как вы не ищете определенного пользователя c, но сохраняете всю таблицу registeruser_data, я рекомендую использовать eloquent в качестве было бы проще

вы ищете такого пользователя:

$user = yourModelUser::find($idUser);

или

$user = yourModelUser::where('id' $idUser)->where('type', 'v')->first();

, а затем:

$user->type = 'n';
$user->save();

если вам нужно больше запросов, вы можете посмотреть официальную документацию: https://laravel.com/docs/7.x/eloquent

...