Laravel Money Package: Manipulate model attribute as money values

by jhteam
0 comment

Gói này có thể thao tác thuộc tính mô hình dưới dạng giá trị tiền. Nó cung cấp một đặc điểm có thể được sử dụng trong các lớp mô hình của các ứng dụng dựa trên khuôn khổ Laravel để coi các thuộc tính cụ thể như số tiền.

Tính năng:

– Định dạng các thuộc tính tiền để hiển thị chúng theo một loại tiền nhất định
– Thực hiện các thao tác về tiền như rút một số tiền (trừ) hoặc gửi một số tiền (cộng)
– Truy xuất các đối tượng lớp mô hình phù hợp với các điều kiện nhất định của giá trị của các thuộc tính tiền , chẳng hạn như tìm tất cả các đối tượng có thuộc tính tiền với các giá trị đã cho
– Thực hiện các phép toán số tiền với tất cả các đối tượng của lớp mô hình có thuộc tính tiền, giống như tính tổng số tiền của tất cả các đối tượng của lớp mô hình

Cài đặt:

Cài đặt phiên bản mới nhất bằng cách sử dụng Composer:

$ composer require pharaonic/laravel-money

sau đó xuất bản các tệp di chuyển và cấu hình

$ php artisan vendor:publish --tag=laravel-money

Cấu hình:

// config/Pharaonic/money.php

return [

    // Default Language
    'language'  => 'en',

    // Default Currency
    'currency'  => 'USD',

    // Select specific currencies
    'only'      => [],

    // Except specific currencies
    'except'    => [],

    // Default fields names
    'fields'    => ['price']
];

Tuỳ chọn:

use Pharaonic\Laravel\Money\Facades\Money;

// Setting default currency
Money::setCurrency('USD');

// Setting default language
// Supported language [ar, en, fr, de, es]
Money::setLanguage('ar');

// Select specific currencies 
Money::only(['USD']);
    
// Except specific currencies
Money::except(['USD']);

// Get current language
$language 		= Money::getLanguage();

// Get currency Code, Name, Symbol
$currency_code 		= Money::getCurrencyCode();
$currency_name 		= Money::getCurrencyName();
$currency_symbol 	= Money::getCurrencySymbol();

// Get currencies list (code => name)
$currencies 		= Money::getCurrenciesList();

Sử dụng với model của bạn:

use Pharaonic\Laravel\Helpers\Traits\HasCustomAttributes;
use Pharaonic\Laravel\Money\HasMoney;

class Person extends Model
{
    use HasCustomAttributes, HasMoney;
    
    // You can include your all monies names here.
	protected $moneyAttributes = ['balance'];
    ...
}

Thiết lập đơn vị tiền tệ:

// Setting money to exists person
$person = Person::find(1);
$person->money('balance', 'USD', 100);

// Setting money to new person with current currency ($currency_code)
$person = Person::create([
    'balance'
    ...
]);

Lấy và thiết lập giá trị:

$person = Person::find(1);

// Get money with specific currency
echo $person->money('balance', 'USD');

echo $person->balance; 					// 100.00
echo $person->balance->amount; 			// 100
echo $person->balance->withName(); 		// 100.00 USD
echo $person->balance->withSymbol();	// $ 100.00
echo $person->balance->toString() 		// one hundred dollars {PHP Extension intl}

Hành động

$person = Person::find(1);

$person->balance->withdraw(0.50); 	// withdraw 50 cents
$person->balance->deposit(10.50); 	// deposit 10 dollars and 50 cents
$person->balance->reset();			// resetting money to zero

Quan hệ & Phạm vi

// Getting monies with all currencies
$monies = $person->monies;

// Getting all People who has no monies
dd(Person::withoutMonies()->get());

// with Currency only
$pplWithMoney = Person::withMoney('USD')->get(); 
// with Currency and name
$pplWithMoney = Person::withMoney('USD', 'balance')->get(); 

// with Currencies only
$pplWithMoney = Person::withAnyMoney(['USD'])->get();
// with Currencies and names
$pplWithMoney = Person::withAnyMoney(['USD'], ['balance'])->get(); 

Tổng hợp

// Getting MIN Money
echo Person::minMoney('balance');
echo Person::minMoney('balance', 'USD');

// Getting MAX Money
echo Person::maxMoney('balance');
echo Person::maxMoney('balance', 'USD');

// Getting SUM All Monies
echo Person::sumMoney('balance');
echo Person::sumMoney('balance', 'USD');

// Getting SUM Negative Monies
echo Person::sumNegativeMoney('balance');
echo Person::sumNegativeMoney('balance', 'USD');

// Getting SUM Positive Monies
echo Person::sumPositiveMoney('balance');
echo Person::sumPositiveMoney('balance', 'USD');

// Getting Average Monies
echo Person::avgMoney('balance');
echo Person::avgMoney('balance', 'USD');

// Getting Count OF Monies Rows
echo Person::countMoney();
echo Person::countMoney('balance');
echo Person::countMoney(null, 'USD');
echo Person::countMoney('balance', 'USD');

Sự kiện

...
class Person extends Model
{
    ...
    /
     * Setted Money with (Create/New/money method) Event
     *
     * @param string $name
     * @param string $currency
     * @param float $amount
     * @return void
     */
    public function setted(string $name, string $currency, float $amount)
    {
        //
    }
    
    /
     * Withdrew Money Event
     *
     * @param string $name
     * @param string $currency
     * @param float $amount
     * @return void
     */
    public function withdrew(string $name, string $currency, float $amount)
    {
        //
    }

    /
     * Deposited Money Event
     *
     * @param string $name
     * @param string $currency
     * @param float $amount
     * @return void
     */
    public function deposited(string $name, string $currency, float $amount)
    {
        //
    }

    /
     * Reset Money Event
     *
     * @param string $name
     * @param string $currency
     * @return void
     */
    public function reset(string $name, string $currency)
    {
        //
    }
    ...
}

Tải xuống:

Leave a Comment