本文整理匯總了PHP中Doctrine\ODM\MongoDB\Mapping\ClassMetadataInfo::setShardKey方法的典型用法代碼示例。如果您正苦於以下問題:PHP ClassMetadataInfo::setShardKey方法的具體用法?PHP ClassMetadataInfo::setShardKey怎麽用?PHP ClassMetadataInfo::setShardKey使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類Doctrine\ODM\MongoDB\Mapping\ClassMetadataInfo
的用法示例。
在下文中一共展示了ClassMetadataInfo::setShardKey方法的5個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的PHP代碼示例。
示例1: setShardKey
/**
* @param ClassMetadataInfo $class
* @param ODM\ShardKey $shardKey
*
* @throws MappingException
*/
private function setShardKey(ClassMetadataInfo $class, ODM\ShardKey $shardKey)
{
$options = array();
$allowed = array('unique', 'numInitialChunks');
foreach ($allowed as $name) {
if (isset($shardKey->{$name})) {
$options[$name] = $shardKey->{$name};
}
}
$class->setShardKey($shardKey->keys, $options);
}
示例2: setShardKey
private function setShardKey(ClassMetadataInfo $class, \SimpleXmlElement $xmlShardkey)
{
$attributes = $xmlShardkey->attributes();
$keys = array();
$options = array();
foreach ($xmlShardkey->{'key'} as $key) {
$keys[(string) $key['name']] = isset($key['order']) ? (string) $key['order'] : 'asc';
}
if (isset($attributes['unique'])) {
$options['unique'] = 'true' === (string) $attributes['unique'];
}
if (isset($attributes['numInitialChunks'])) {
$options['numInitialChunks'] = (int) $attributes['numInitialChunks'];
}
if (isset($xmlShardkey->{'option'})) {
foreach ($xmlShardkey->{'option'} as $option) {
$value = (string) $option['value'];
if ($value === 'true') {
$value = true;
} elseif ($value === 'false') {
$value = false;
} elseif (is_numeric($value)) {
$value = preg_match('/^[-]?\\d+$/', $value) ? (int) $value : (double) $value;
}
$options[(string) $option['name']] = $value;
}
}
$class->setShardKey($keys, $options);
}
示例3: testNoReferenceManyInShardKey
/**
* @expectedException \Doctrine\ODM\MongoDB\Mapping\MappingException
* @expectedExceptionMessage No multikey indexes are allowed in the shard key
*/
public function testNoReferenceManyInShardKey()
{
$cm = new ClassMetadataInfo('stdClass');
$cm->mapManyEmbedded(['fieldName' => 'referenceMany']);
$cm->setShardKey(array('referenceMany' => 1));
}
示例4: setShardKey
private function setShardKey(ClassMetadataInfo $class, array $shardKey)
{
$keys = $shardKey['keys'];
$options = array();
if (isset($shardKey['options'])) {
$allowed = array('unique', 'numInitialChunks');
foreach ($shardKey['options'] as $name => $value) {
if (!in_array($name, $allowed, true)) {
continue;
}
$options[$name] = $value;
}
}
$class->setShardKey($keys, $options);
}
示例5: testEmbeddedDocumentCantHaveShardKey
/**
* @expectedException \Doctrine\ODM\MongoDB\Mapping\MappingException
* @expectedExceptionMessage Embedded document can't have shard key: stdClass
*/
public function testEmbeddedDocumentCantHaveShardKey()
{
$cm = new ClassMetadataInfo('stdClass');
$cm->isEmbeddedDocument = true;
$cm->setShardKey(array('id' => 'asc'));
}