代码如下,业务就是注册新用户后续根据用户id访问问卷调查的答案,现在日志中插入没有问题,这个接口成功返回,后续的接口去数据库中却取不到数据,想了解下会不会因为后面什么代码逻辑导致事务回滚了?
我就是想了解下Webman中事务是自动开启还是手动触发呢
public function loginByMobile(Request $request)
{
//此处省略了部分代码
$member = $this->member->firstByMobile($member_mobile);
//通过分享、名片进来的学员,建立与邀请人的关系
$sale_user_id = 0;//分享人对应的顾问user_id
if (!$member) {
$new_member = true;
$member = new Member();
if ($sale_user_id) {//绑定顾问
$member->user_id = $sale_user_id;
} elseif ($sale_member_id) {//记录推销人member_id,建立分销关系
$member->sale_member_id = $sale_member_id;
}
$member->member_origin = MemberEnum::SOURCE_MINIPROGRAM;
$member->member_mobile = $member_mobile;
$member->member_points = PointEnum::$points_type_amount[PointEnum::POINTS_TYPE_LOG];
$member->member_create_at = time();
$member->member_update_at = time();
$result = $member->save(); // 此处保存会员信息,日志有打印,均正常,结果后续接口查询时查不到该会员信息
if (!$result){
return $this->success(['code' => CodeEnum::LOGIN_SUCCESS_REG_FAILED]);
}
}
//此处省略了部分代码
}
数据库组件和webman是独立的,webman不会自动开启事务。
你的问题可能是哪里开启了事务没提交导致的,
装下webman/log,它会自动检测哪些请求没提交事物然后记录日志,并给前端返回错误。