0

Cakephp に問題があります。借方と貸方の列を持つデータベース テーブルがあります。以下では、最初のユーザーのアカウントからお金を差し引いて記録を保存しようとしています。保存が成功すると、同じ配列が変更され、所有者 ID がお金が送られるユーザーの ID に変更され、借方が貸方に変わります。問題はこれです

正しくない

user_id payment_to_id credit debit
1       2             0.00   3.00
1       2             3.00   0.00

以下は、それがどのように表示されるかです。user_id 2 がお金を受け取っているため、payment_to_id は null のままです。しかし、このようには機能しません。上記のように動作しますが、これは正しくありません。create() メソッドを使用して新しいレコードを作成していますが、機能しません。私は何を間違っていますか

user_id payment_to_id credit debit
1       2             0.00   3.00
2       null          3.00   0.00

以下はコードです

    function advanced_transfer($data = array()) {
        if(!empty($data)) {
            //I store the original credit in a variable called credit
            $credit = $data['PaymentTransaction']['credit'];
            //since I have credit stored, a zero it out so it wont save
            $data['PaymentTransaction']['credit'] = 0;
            //then I first set up a debit transaction
            $data['PaymentTransaction']['debit'] = $credit;
            //I am storing both the account owner and payment to id's
            $accountOwnerId = $data['PaymentTransaction']['user_id'];
            $paymentToId = $data['PaymentTransaction']['payment_to_id'];
            $this->create();//new record
            if($this->save($data, false)) {//save
                $data['PaymentTransaction']['user_id'] = $paymentToId;//I set the owner to the payment to user
                $data['PaymentTransaction']['payment_to_id'] = null;//I null out payment to cause the user is recieving
                $data['PaymentTransaction']['credit'] = $credit;//I set theirs to credit
                $data['PaymentTransaction']['debit'] = 0;//and null out debit cause we arent taking out
                $this->create();//create new record
                if(!$this->save($data, false)) {//save with no validation again
                    return false;
                }
            } else {
                return false;
            }
        } else {
            return false;
        }

        return true;
    }
4

0 に答える 0