MoneyBundle

Documentation

Version Not Yet Released

You are viewing the documentation for the 2.x branch of the MoneyBundle package which has not yet been released. Be aware that the API for this version may change before release.

Doctrine

MongoDB ODM

When used with an application where the Doctrine MongoDB ODM (and DoctrineMongoDBBundle) is installed, the MoneyBundle defines an appropriate schema allowing Money\Money objects to be embedded within documents with no extra effort.

All that is required is to define a field on your document as an embedded field with the Money\Money type, such as the below example document:

The below example uses PHP 8 Attributes, but you can use any of the ODM's mapping drivers in your application.
<?php

namespace App\Document;

use Doctrine\ODM\MongoDB\Mapping\Annotations as ODM;
use Money\Money;

#[ODM\Document]
class Invoice
{
    #[ODM\EmbedOne(targetDocument: Money::class)]
    public Money $tax_due;

    public function __construct()
    {
        $this->tax_due = Money::USD(0);
    }
}

ORM

When used with an application where the Doctrine ORM (and DoctrineBundle) is installed, the MoneyBundle defines an appropriate database schema allowing Money\Money objects to be used within entities with no extra effort.

All that is required is to define a field on your entity as an embedded field with the Money\Money type, such as the below example entity:

The below example uses PHP 8 Attributes, but you can use any of the ORM's mapping drivers in your application.
<?php

namespace App\Entity;

use Doctrine\ORM\Mapping as ORM;
use Money\Money;

#[ORM\Entity]
class Invoice
{
    #[ORM\Embedded(class: Money::class)]
    public Money $tax_due;

    public function __construct()
    {
        $this->tax_due = Money::USD(0);
    }
}