Add BMAD commands, skills, and module files from piSetup
This commit is contained in:
@@ -0,0 +1,127 @@
|
||||
# Entity Reference
|
||||
|
||||
Detailed patterns for Oro entity work.
|
||||
|
||||
## Full Entity Example
|
||||
|
||||
```php
|
||||
namespace Acme\Bundle\ExampleBundle\Entity;
|
||||
|
||||
use Doctrine\ORM\Mapping as ORM;
|
||||
use Oro\Bundle\EntityConfigBundle\Metadata\Attribute\Config;
|
||||
use Oro\Bundle\EntityConfigBundle\Metadata\Attribute\ConfigField;
|
||||
use Oro\Bundle\EntityExtendBundle\Entity\ExtendEntityInterface;
|
||||
use Oro\Bundle\EntityExtendBundle\Entity\ExtendEntityTrait;
|
||||
|
||||
#[ORM\Entity]
|
||||
#[ORM\Table(name: 'acme_example')]
|
||||
#[ORM\HasLifecycleCallbacks]
|
||||
#[Config(
|
||||
routeName: 'acme_example_index',
|
||||
routeView: 'acme_example_view',
|
||||
defaultValues: [
|
||||
'entity' => ['icon' => 'fa-cube'],
|
||||
'security' => ['type' => 'ACL', 'group_name' => ''],
|
||||
'ownership' => [
|
||||
'owner_type' => 'USER',
|
||||
'owner_field_name' => 'owner',
|
||||
'owner_column_name' => 'user_owner_id',
|
||||
'organization_field_name' => 'organization',
|
||||
'organization_column_name' => 'organization_id',
|
||||
],
|
||||
]
|
||||
)]
|
||||
class Example implements ExtendEntityInterface
|
||||
{
|
||||
use ExtendEntityTrait;
|
||||
|
||||
#[ORM\Id]
|
||||
#[ORM\GeneratedValue]
|
||||
#[ORM\Column(type: 'integer')]
|
||||
private ?int $id = null;
|
||||
|
||||
#[ORM\Column(type: 'string', length: 255)]
|
||||
#[ConfigField(defaultValues: ['dataaudit' => ['auditable' => true]])]
|
||||
private string $name = '';
|
||||
|
||||
#[ORM\Column(type: 'datetime')]
|
||||
private ?\DateTimeInterface $createdAt = null;
|
||||
|
||||
#[ORM\Column(type: 'datetime')]
|
||||
private ?\DateTimeInterface $updatedAt = null;
|
||||
|
||||
#[ORM\PrePersist]
|
||||
public function prePersist(): void
|
||||
{
|
||||
$this->createdAt = new \DateTime('now', new \DateTimeZone('UTC'));
|
||||
$this->updatedAt = clone $this->createdAt;
|
||||
}
|
||||
|
||||
#[ORM\PreUpdate]
|
||||
public function preUpdate(): void
|
||||
{
|
||||
$this->updatedAt = new \DateTime('now', new \DateTimeZone('UTC'));
|
||||
}
|
||||
|
||||
// getters/setters...
|
||||
}
|
||||
```
|
||||
|
||||
## Migration Example (Installation)
|
||||
|
||||
```php
|
||||
namespace Acme\Bundle\ExampleBundle\Migrations\Schema;
|
||||
|
||||
use Doctrine\DBAL\Schema\Schema;
|
||||
use Oro\Bundle\MigrationBundle\Migration\Installation;
|
||||
use Oro\Bundle\MigrationBundle\Migration\QueryBag;
|
||||
|
||||
class AcmeExampleBundleInstaller implements Installation
|
||||
{
|
||||
public function getMigrationVersion(): string
|
||||
{
|
||||
return 'v1_0';
|
||||
}
|
||||
|
||||
public function up(Schema $schema, QueryBag $queries): void
|
||||
{
|
||||
$table = $schema->createTable('acme_example');
|
||||
$table->addColumn('id', 'integer', ['autoincrement' => true]);
|
||||
$table->addColumn('name', 'string', ['length' => 255]);
|
||||
$table->addColumn('created_at', 'datetime');
|
||||
$table->addColumn('updated_at', 'datetime');
|
||||
$table->setPrimaryKey(['id']);
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## Extend Entity Commands
|
||||
|
||||
```bash
|
||||
php bin/console oro:entity-extend:cache:clear
|
||||
php bin/console oro:entity-extend:cache:warmup
|
||||
php bin/console oro:entity-extend:update-schema
|
||||
php bin/console oro:entity-extend:update-schema --dry-run
|
||||
```
|
||||
|
||||
## Enum/Option Set Fields
|
||||
|
||||
For select/multi-select fields, use the enum pattern:
|
||||
|
||||
```php
|
||||
$table->addColumn('status_id', 'string', [
|
||||
'oro_options' => [
|
||||
'extend' => ['is_extend' => true, 'owner' => ExtendScope::OWNER_SYSTEM],
|
||||
'enum' => ['enum_code' => 'example_status'],
|
||||
]
|
||||
]);
|
||||
```
|
||||
|
||||
## Extended Field Access
|
||||
|
||||
Extended fields are accessed via magic methods generated at cache warmup:
|
||||
|
||||
```php
|
||||
$entity->getMyCustomField();
|
||||
$entity->setMyCustomField($value);
|
||||
```
|
||||
Reference in New Issue
Block a user