关于laravel事务
程序员文章站
2022-06-16 13:55:39
...
DB::beginTransaction();
foreach($checkArr[0] as $v){
$id = explode('-',$v)[0];
$rank = explode('-',$v)[1] != '' ? explode('-',$v)[1] : 5;
if(index_friendlink::where('id','=',$id)->pluck('online') == 1){
$updrank = index_friendlink::find($id);
$updrank -> rank = $rank;
$updrank -> save();
}
}
$ret = index_friendlink::where('online','=','1')->get();
foreach($ret as $v) {
$retRank[] = $v->rank;
}
if (count($retRank) != count(array_unique($retRank))) {
DB::rollback();
echo '2';
exit;
}
DB::commit();
怎么回滚不了,第一次使用laravel,求大神解答,数据库已改成innodb
回复内容:
DB::beginTransaction();
foreach($checkArr[0] as $v){
$id = explode('-',$v)[0];
$rank = explode('-',$v)[1] != '' ? explode('-',$v)[1] : 5;
if(index_friendlink::where('id','=',$id)->pluck('online') == 1){
$updrank = index_friendlink::find($id);
$updrank -> rank = $rank;
$updrank -> save();
}
}
$ret = index_friendlink::where('online','=','1')->get();
foreach($ret as $v) {
$retRank[] = $v->rank;
}
if (count($retRank) != count(array_unique($retRank))) {
DB::rollback();
echo '2';
exit;
}
DB::commit();
怎么回滚不了,第一次使用laravel,求大神解答,数据库已改成innodb
你的回滚条件是用 PHP 进行判断,而事务应该脱离 PHP ,MySQL 中就能直接实现的吧,比如说删除或者插入失败或者没有走到 commit 回滚。进这个问题看看
上一篇: .ini 格式的程序配置文件中使用到的