Doctrine Utils

Doctrine Utils

Siteadmin 3 using Doctrine 2 as the ORM of choice. The doctrineUtils helper encapsulates a collection of functions that preform common operations with a doctrine entity. These operations range from converting an entity to an array to retrieving data store information about an entity.

Convert entity to array

doctrineUtils::getEntityArray(
    $entity,
    $includeAssociations,
    $useProxyIds,
    $associationConfiguration
);

Parameter

Type

Required

Description

$entity

Object

yes

The doctrine entity to be converted.

$includeAssociations

boolean

no

Default: false. If true, associated objects will be included in the converted array. For example, a user may have an association with posts. When converting the user object to an array, this flag must be set to true to include the user's posts. > Only in-memory associations will be included.

$useProxyIds

boolean

no

Default: false. If true, the real IDs of the base entity and associated entities will be replaced with UUIDs. The UUID Proxy documentation describes how to access content from these UUIDs.

$associationConfiguration

array

no

Default: []. A key/value map containing a list of entities that should be included in the object to array conversion. See association configuration guide for more information.

Association Configuration

The $associationConfiguration parameter in getEntityArray() is a map of entities which are allowed to be included in the object to array conversion process. This allows you to exclude unwanted data sets from the parsing process.

Example

<?php
class User {
    /** @var  int */
    protected $id;
    
    /** @var  string */
    protected $name;
    
    /** @var  Post[] */
    protected $posts;
    
    /** @var  User[] */
    protected $followers;
}

function parseUserAsArray(User $user) {
    $assocConf = array(
        'followers' => 'object'
    );
    
    return doctrineUtils::getEntityArray($user, true, false, $assocConf);
}

The code snippet above will parse the user's id, name, and followers fields into an array. The posts property will be ignored, because it is not included in the association configuration.

Notice the association configuration is a key/value pair, where the key is the name of the associated entity, and the value is its type. The value will almost always be object.

Result

You may assume the user's ID is 12.

{
  "12": {
    "id": 12,
    "name": "John Doe",
    "followers": [
      <list of followers>
    ]
  }
}

Convert entity collection to array

doctrineUtils::getEntityCollectionArray(
    $collection,
    $includeAssociation,
    $associationConfiguration
);

Parameter

Type

Required

Description

$entity

Object

yes

The doctrine entity to be converted.

$includeAssociations

boolean

no

Default: false. If true, associated objects will be included in the converted array. For example, a user may have an association with posts. When converting the user object to an array, this flag must be set to true to include the user's posts. > Only in-memory associations will be included.

$associationConfiguration

array

no

Default: []. A key/value map containing a list of entities that should be included in the object to array conversion. See association configuration guide for more information.

Set entity properties from array

Given a property map with the format [propertyName => value], calls the setters on the given entity with the passed value data.

doctrineUtils::setEntityData($properties, $entity, $useBlankFields);

Paremeter

Type

Required

Description

$properties

array

yes

A set of key/value pairs, representing an entity's properties and their corresponding values.

$entity

Object

yes

A doctrine entity.

$useBlankFields

boolean

no

Default: false. If false, keys with empty values will skipped. If true, the empty values will replace the value of the corresponding object property.

Example

<?php
class User {
    protected $firstName;
    protected $nickname;
    private $lastName;
    public $age;
}

$user = new User();
$user->setFirstName('John')
     ->setLastName('Doe')
     ->setNickname('Bobby')
     ->setAge(30);

$properties = array(
    'nickname'  => null,
    'age'       => 25
);

// Age is changed from 30 to 25.
// Nickname is skipped since the new value is null|0|false.
doctrineUtils::setEntityData($properties, $user);

// Age is changed from 30 to 25.
// Nickname is changed from 'Bobby' to null.
doctrineUtils::setEntityData($properties, $user, true);

// Create a new user object from property map.
$user2 = doctrineUtils::setEntityData($properties, new User(), true);

Get entity meta data

Retrieves information about an entity's methods and properties.

doctrineUtils:getEntityInfo($entity)

Last updated