1

新しいレコードを TableB に挿入するトランザクションがあり、TableA に適切なサポート レコードがない場合は、TableA にも挿入し、その主キーを TableB への外部キー エントリとして使用します。

ここに画像の説明を入力

$transaction=$connection->beginTransaction();
try 
{
    $tableA->IsActive = 'Y'; 
    $tableA->save();

    $model->TableAId = $tableA->TableAId;  //not sure what to put here for $tableA->TableAId
    $model->save();

    $transaction->commit(); 
}

この状況では、次のように使用できYii::app()->db->getLastInsertId();ます$tableA->TableAId;

ここでは明らかに精度が非常に重要なので、適切なレコードが TableA と TableB の間で一致することを保証する必要があります。

4

1 に答える 1

2

基本的に、あなたのコメントは完璧に見えます。$model->TableAId = $tableA->TableAId; // これは完璧です!!しかし、コーディングしないでください。以下はあなたのコードです。

$transaction=$connection->beginTransaction();
try 
{
    $tableA = TableA::model()->findByPk("id"); OR $tableA = new TableA;
    $tableA->IsActive = 'Y'; 
    $tableA->save();

    $model = new TableB;
    $model->TableAId = $tableA->TableAId;  //not sure what to put here for $tableA->TableAId // This is perfect!!
    $model->save();

    $transaction->commit(); 
}
于 2012-12-12T06:40:59.227 に答える