public function prepareValue(array $mapping, $value)
{
if ($value === null) {
return null;
}
if ($mapping['type'] === 'many') {
$prepared = null;
if ($value) {
$oneMapping = $mapping;
$oneMapping['type'] = 'one';
$prepared = array();
foreach ($value as $rawValue) {
$prepared[] = $this->prepareValue($oneMapping, $rawValue);
}
}
} elseif (isset($mapping['embedded'])) {
$prepared = $this->prepareEmbeddedDocValue($mapping, $value);
} elseif (isset($mapping['reference'])) {
$prepared = $this->prepareReferencedDocValue($mapping, $value);
} else {
$prepared = Type::getType($mapping['type'])->convertToDatabaseValue($value);
}
return $prepared;
}