我知道使用$ 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整个交易。
如何在单个对象调用中存储所有问题答案?
答案 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?