そのため、1つ以上のアカウントで構成されるトランザクションを処理するアプリケーションを開発しています。たとえば、ウォルマートで100ドル購入すると、食料品のアカウントから40ドル、家庭のアカウントから60ドルが支払われる場合があります。
フォームは大まかに:
echo $this->Form->input('Transaction.user_id');
echo $this->Form->input('Transaction.description');
echo $this->Form->input('Transaction.amount');
echo $this->Form->input('AccountTransaction.0.account_id');
echo $this->Form->input('AccountTransaction.0.amount');
.
.
.
1つ以上のアカウントトランザクションが関係する可能性がある場合。また、AccountTransactionにはtransaction_idフィールドがあります。
フォームが送信されたら、次のことを行います。
- すべてのアカウントトランザクション金額の合計がトランザクション金額と等しいことを確認してください。
- トランザクションを保存し、そのIDを取得します
- トランザクションIDを使用してアカウントトランザクションを保存します
したがって、コントローラーでこれらのことを簡単に行うことができますが、トランザクションモデルで検証を設定して、保存する前にすべてのアカウントトランザクションが加算されることを確認する方法があるかどうか疑問に思っています。