2016-03-31 8 views
0

$ dataMapperObject-> query( 'INSERT INTOテーブル(a、b)VALUES(1,2)、(2,3)、(3,4) ; ');それは単純なSQLのINSERTステートメントのように複数のレコードを保存します。同じオブジェクトを使用してdatamapperに複数の行を追加する方法

しかし、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(); 
} 

ここでは、上記の例では、私はそれぞれ、すべての質問を保存し、正常にお答えしたいと思います。いずれかが不足している場合、私はトランザクション全体をrallbackしたい。

すべての質問回答を単一オブジェクト呼び出しで保存するにはどうすればよいですか?

+0

単一オブジェクト呼び出しではどういう意味ですか?私はあなたが欲しいものを理解していると思いますが、私が間違っていれば私を正します各患者について、質問と回答の追加を開始しますが、空であれば、その患者の以前に追加された質問と回答の追加を元に戻しますか? – Jester

+0

はい@ジェスターあなたはそれを持っています。 – Chintan7027

答えて

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(); 
} 

私は、彼らがヌルを含まないように、データベースのフィールドを設定する必要があるかもしれませんが、ここでは別のポストだと思います同じ話題で Can I rollback a transaction after commiting it with Datamapper/Codeigniter?

関連する問題