Codeigniter事务-Laravel API-2个数据库方案

时间:2018-11-16 15:31:47

标签: php mysql laravel codeigniter transactions

在提出问题之前,让我布置场景。

一个具有2个不同方案的MySQL数据库。
Codeigniter(CI)网站。
Laravel API。
方案B表列具有一个带有方案A表ID的FK。

我启动CI交易,在方案A中添加一行,然后向Laravel API发送请求(插入的行ID是该请求的一部分)。

CI控制器:

$this->db->trans_begin();
if(isset($data['schemeAId'])){
    //Insert the new row in Scheme A.
    $this->modelSchemeA->insert_row($data['schemeAId'],$data['schemeAValue']);
} else {
    //The row already exists, no need to insert anything.
}

稍后在同一控制器中,经过一些计算,我调用了开始卷曲的模型,任务是更新Scheme B行:

$this->curlModel->editSchemeB($data['schemeBId'],$data);

CI模型:

public function editSchemeB($id,$data){
    if ( empty($array) or empty($id))return false;

    $json=json_encode($array);
    $send= array('json' => $json);
    $send= json_encode($send);

    $curl = curl_init();

    curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "PUT");
    curl_setopt($curl, CURLOPT_POSTFIELDS, $send);
    curl_setopt($curl, CURLOPT_URL, API_URL.'/schemeB/'.$id);
    curl_setopt($curl, CURLOPT_HTTPHEADER, array('Accept: application/json','Content-type: application/json'));
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);

    $result = curl_exec($curl);

    $result = json_decode($result);
    if ( $result->status == "OK") return result;
    return false;
}

经过一些验证后,Laravel API在此行中失败:

Laravel:

$row = SchemeB::where('id', $id)->update($params_array);

在此之前返回某些内容效果很好,请尝试在30秒钟之后返回某些内容。超时以CI显示。这是在插入新的Scheme A行时...如果我使用的是已经存在的Scheme A ID,则可以正常工作。

此外,如果我不进行任何交易就尝试了这两个计划,那么这两个计划都会更新,并且可以再次正常运行。因此,我几乎可以确定这是由于所有CI交易Laravel混乱导致FK限制。

如果需要进一步的信息/代码,或者我忘了一些东西,我很乐意用它来编辑问题。

0 个答案:

没有答案