//多數(shù)據(jù)入庫(kù)
$master_rt = \Phpcmf\Service::M()->db->table('1_news')->insertbatch($post[1]);//主表數(shù)據(jù)入庫(kù)
$id = \Phpcmf\Service::M()->db->insertID();//獲取第一條入庫(kù)ID
$ids = range($id,$id+$master_rt-1);//生成入庫(kù)數(shù)據(jù)ID數(shù)組
//將ID值融入附表數(shù)據(jù)結(jié)構(gòu)
foreach($ids as $key => $value){
$post[0][$key]['id'] = $value;
}
$schedule_rt = \Phpcmf\Service::M()->db->table('1_news_data_0')->insertbatch($post[0]);//附表數(shù)據(jù)入庫(kù)
怎么使一個(gè)入庫(kù)失敗另一個(gè)也失敗?
什么叫怎么使一個(gè)入庫(kù)失敗另一個(gè)也失敗?
開源是一種精神,但不是義務(wù),幫忙是情分,不幫也不要抱怨,建議大家多研究代碼、多閱讀代碼、多翻閱社區(qū)歷史問(wèn)題!
回復(fù)迅??蚣軇?chuàng)始人
兩表添加不是要整事務(wù)嗎?
if $id 不為空再執(zhí)行副表啊~ 這么簡(jiǎn)單都不會(huì)?
回復(fù)@ibennie
兩表添加不是要整事務(wù)嗎?
回復(fù)@yangyang
你懂的話就整事務(wù)咯,反正我不懂,哈哈,雖然之前學(xué)的時(shí)候有整過(guò)!
我是看你上面的代碼。做出的解釋,本身你主表和副表入庫(kù)是2條不同的 SQL,那你如果主表失敗了,就可以用來(lái)判斷是否要副表入庫(kù)
回復(fù)@ibennie
加個(gè)if判斷也可以嗎?
回復(fù)@yangyang
為什么不可以?你看官方的源碼,有多少寫事務(wù)的
回復(fù)@ibennie
回復(fù)@yangyang
他這個(gè)代碼已經(jīng)是主表入庫(kù)失敗就取消入庫(kù)的了,你看他的判斷
if($master_rt){
成功,則操作副表
} esle{
失敗,直接返回錯(cuò)誤提示
}
就是用來(lái)判斷主表是否入庫(kù)成功的~
回復(fù)@ibennie
如果是附表出錯(cuò)呢?
回復(fù)@yangyang
好問(wèn)題,完全可以舉一反三
.
.
if($master_rt){
if($schedule_rt){
成功,提示入庫(kù)成功
} esle{
失敗,刪除主表這個(gè)ID的那條數(shù)據(jù),然后返回錯(cuò)誤提示
}
} esle{
失敗,直接返回錯(cuò)誤提示
}
回復(fù)@yangyang
當(dāng)然,可能有更好寫法,原理是這樣的了,在你找到更好寫法之前,你就這樣寫吧