eloquent的事务
以前没有碰到这种需求,就没在意。在 eloquent
的事务中,在 commit
之前,对对象进行 save
操作,再进行查询,查到的数据已经是更新之后的。代码如下
public function index(){
DB::beginTransaction();
$id = 2;
$user = User::find($id);
$user->name = 'name_after';
dump(User::find($id)->name); //① 此时name是name_before
$user->save();
dump(User::find($id)->name); //② 此时name已经是name_after
Db::commit();
dump(User::find($id)->name); //③ 我的理解是应该此时才会变更
}
我的理解是应该在 Db::commit()
之后,数据才会变。
实际上如果去掉 commit
操作,数据不会写库,但在位置②的时候,查出来的数据也已经是 name_after
了。
PS: 数据库是 postgres,隔离等级是 read committed
,没有问题。
我想要在位置②查出来的数据还是 name_before
,应该怎么做?
谢谢~
推荐文章: