Server IP : 66.29.132.124 / Your IP : 3.142.198.108 Web Server : LiteSpeed System : Linux business141.web-hosting.com 4.18.0-553.lve.el8.x86_64 #1 SMP Mon May 27 15:27:34 UTC 2024 x86_64 User : wavevlvu ( 1524) PHP Version : 7.4.33 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /home/wavevlvu/book24.ng/vendor/bavix/laravel-wallet/docs/ |
Upload File : |
# Transfer between wallets Transfer in our system are two well-known [Deposit](deposit) and [Withdraw](withdraw) operations that are performed in one transaction. The transfer takes place between wallets. --- ## User Model Prepare the model, add the `HasWallet`, `HasWallets` trait's and `Wallet` interface. ```php use Bavix\Wallet\Traits\HasWallet; use Bavix\Wallet\Traits\HasWallets; use Bavix\Wallet\Interfaces\Wallet; class User extends Model implements Wallet { use HasWallet, HasWallets; } ``` ## Make a Transfer Find user: ```php $first = User::first(); $last = User::orderBy('id', 'desc')->first(); // last user $first->getKey() !== $last->getKey(); // true ``` Create new wallets for users. ```php $name = 'New Wallet'; $firstWallet = $first->createWallet(compact('name')); $lastWallet = $last->createWallet(compact('name')); $firstWallet->deposit(100); $firstWallet->balance; // int(100) $lastWallet->balance; // int(0) ``` The transfer will be from the first user to the last. ```php $firstWallet->transfer($lastWallet, 5); $firstWallet->balance; // int(95) $lastWallet->balance; // int(5) ``` It worked! ## Force Transfer Check the user's balance. ```php $firstWallet->balance; // int(100) $lastWallet->balance; // int(0) ``` The transfer will be from the first user to the second. ```php $firstWallet->forceTransfer($lastWallet, 500); $firstWallet->balance; // int(-400) $lastWallet->balance; // int(500) ``` It worked!