如何使用同一对象在datamapper中添加多行

时间:2016-03-31 18:20:47

标签: php mysql database datamapper

我知道使用$ dataMapperObject-> query('INSERT INTO table(a,b)VALUES(1,2),(2,3),(3,4);');将保存多个记录,因为它是简单的sql INSERT语句。

但是如何在datamapper的同一个对象中存储多个值?

示例:

$addPatient= new Patient_table();  
$addPatient->trans_begin();
foreach($_POST as $key=>$val){
    $addPatient->patient_id=$this->patient-id;
    $addPatient->question=$key;
    $addPatient->answer=$val;
    $addPatient->save();
}

在上面的示例中,我想成功存储每个问题和答案。如果缺少任何一个,我想ralloback整个交易。

如何在单个对象调用中存储所有问题答案?

1 个答案:

答案 0 :(得分:0)

我对使用datamapper并不熟悉,但我认为以下内容应该有效:

$addPatient= new Patient_table();  
$addPatient->trans_begin();
foreach($_POST as $key=>$val){
    $addPatient->patient_id=$this->patient-id;
    $addPatient->question=$key;
    $addPatient->answer=$val;
    $addPatient->save();
}
if ($addPatient->trans_status() === FALSE)
{
    $addPatient->trans_rollback();
}
else
{
    $addPatient->trans_commit();
}

我认为您的数据库字段可能必须设置为不能包含null,这是同一主题的另一篇文章。 Can I rollback a transaction after commiting it with Datamapper/Codeigniter?