我知道使用 $dataMapperObject->query('INSERT INTO table (a,b) VALUES (1,2), (2,3), (3,4);');将保存多条记录,因为它是简单的 sql INSERT 语句。
但是如何在数据映射器的同一个对象中存储多个值?
示例:
$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();
}
在上面的示例中,我想成功存储每个问题和答案。如果其中任何一个丢失,我想回滚整个交易。
如何在单个对象调用中存储所有问题答案?
最佳答案
我不太熟悉使用 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?
关于php - 如何使用同一对象在数据映射器中添加多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36340859/