Обновление: Теперь есть официальная поддержка для этого типа. Используйте @ObjectId
или @Field(type="object_id")
в аннотации для использования типа ObjectId / MongoId. Нет необходимости использовать решение ниже.
Кроме того, используйте последний мастер-код с github.com/doctrine/mongodb-odm и избегайте использования версии на веб-сайте (она устарела).
Решение (устарело)
Похоже, это пока не поддерживается. Я обсуждал этот вопрос на канале IRC и открыл билет здесь: https://github.com/doctrine/mongodb-odm/issues/125
Временным исправлением будет определение пользовательского типа и использование аннотации типа @Field(type="objectid")
в ваших классах Document.
Вот код для пользовательского типа, который я использую для этого.
/**
* Custom Data type to support the MongoId data type in fields
*/
class ObjectId extends \Doctrine\ODM\MongoDB\Mapping\Types\Type
{
public function convertToDatabaseValue($value)
{
if ($value === null) {
return null;
}
if ( ! $value instanceof \MongoId) {
$value = new \MongoId($value);
}
return $value;
}
public function convertToPHPValue($value)
{
return $value !== null ? (string)$value : null;
}
}
Зарегистрируйте его, используя
\Doctrine\ODM\MongoDB\Mapping\Types\Type::addType('objectid', 'ObjectId' );