Коллекция ArangoDB-PHP существует проверить

Я хочу проверить, существует ли коллекция с ArangoDB-PHP.

$collectionHandler = new CollectionHandler($arango);
$userCollection = new Collection();
$userCollection->setName('_profiles');

Потому что я получаю следующую ошибку:

Server error: 1207:cannot create collection: duplicate name cannot create collection: duplicate name

Как я могу проверить, существует ли уже коллекция с ArangoDB-PHP?


person Jeroen Steen    schedule 27.10.2014    source источник


Ответы (2)


Я должен использовать оператор try/catch

try { 
    $collectionHandler = new CollectionHandler($arango);
    $userCollection = new Collection();
    $userCollection->setName('_profiles');
    $collectionHandler->create($userCollection);
} catch (ServerException $e) {
    // do something
}
person Helder Santana    schedule 27.10.2014

Использование обработки исключений для управления потоком программы считается плохим стилем — его следует использовать для реальных исключений. В вашем случае предварительное существование коллекции, содержащей профили пользователей, я полагаю, является правилом, а не исключением.

Правильный способ проверки существования коллекции — CollectionHandler::has($id). Правильный способ создания коллекции — использовать CollectionHandler::create($collection). create принимает в качестве параметра строку, имя создаваемой коллекции.

$userCollectionName = '_profiles';

$collectionHandler = new CollectionHandler($arango);
$userCollection = $collectionHandler->has($userCollectionName) ?
    $collectionHandler->get($userCollectionName) 
    : 
    $collectionHandler->create($userCollectionName);
person Tom Regner    schedule 02.02.2017