laravel,mysql事务一旦回滚就无法正常运行

问题描述 投票:0回答:1

我正在使用laravel 5.8同时在4个表中进行插入。当我提交不完整的表格时,它会显示错误,之后当我再次提交正确的数据时,它会显示数据库错误。

SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (`matrimonial_db`.`personal_details`, CONSTRAINT `personal_details_ibfk_1` FOREIGN KEY (`site_user_id`) REFERENCES `siteuser` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION) (SQL: insert into `personal_details` (`site_user_id`, `updated_at`, `created_at`) values (148, 2020-04-29 05:16:53, 2020-04-29 05:16:53))

当我第一次填写表格时,它成功地在所有表格中插入数据,但当我再次尝试时,它将会显示错误。

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()]);
        }
php mysql laravel laravel-5 laravel-5.8
1个回答
0
投票

首先检查外键

$userData是一个集合,因为你不是在寻找一个特定的用户,而是在保存整个表registeruser_data,我建议你使用eloquent,因为它会更容易

你要找的是这样的用户。

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

或者

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

然后。

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

如果你需要更多的查询,你可以查看官方文档。https:/laravel.comdocs7.xeloquent

© www.soinside.com 2019 - 2024. All rights reserved.