php - 如何使用同一对象在数据映射器中添加多行

标签 php mysql database datamapper

我知道使用 $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/

相关文章:

php - mySQL 连接三个表并搜索在一个表中找到的多个关键字

php - 限制 br 的 nl2br 连续显示的数量?

php - 我如何在 mysql 查询中使用变量

sql - Postgres Like 语句无法正确阅读

mysql - 将 `INNER JOIN` 与多个数据库表语句一起使用时意味着什么/发生了什么?

php - 在codeigniter中以文本格式导入excel文件

mysql - 减法 mysql vb net

java - DateTime 未使用 jsp 插入数据库

android - 我应该如何为 Android 应用程序存储个人资料照片数据库/服务器端?

php - 格式化 json 数据以在 Flot 中使用