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
);

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
);

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);

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