Laravel NeoEloquent игнорирует «ОГРАНИЧЕНИЕ» в ::create command

#php #neo4j #laravel-5.2 #neoeloquent

#php #neo4j #laravel-5 #neoeloquent

Вопрос:

Итак, я только начал писать свой API и наткнулся на эту ошибку:

При создании пользователя, который дважды имеет уникальное ОГРАНИЧЕНИЕ, возвращается исключение, но узел все еще создается!

Ограничение относится к свойству «User: access_token», и я использую следующий код:

 try {
    $userAttributes = [
        "email" => $request->email,
        "access_token"  =>  'aaaa',
        "facebook_id"   =>  'bbbb'
    ];
    $user = new User($userAttributes);
    $user->save();
}catch (Exception $e){}
  

Любая помощь, пожалуйста?

Комментарии:

1. Не могли бы вы запустить :schema в своем браузере Neo4j, чтобы убедиться, что ограничения были созданы правильно? Похоже, проблема выходит за рамки OGM.

2. @Mulkave Вот результат команды схемы: Индексы ДЛЯ: User (email) ОНЛАЙН (для ограничения уникальности) ДЛЯ: User (access_token) ОНЛАЙН (для ограничения уникальности) Ограничения ДЛЯ (user: User) УТВЕРЖДАЮТ пользователя.access_token УНИКАЛЕН ДЛЯ (user: User) УТВЕРЖДАЮТ пользователя.электронная почта ЯВЛЯЕТСЯУНИКАЛЬНЫЙ

Ответ №1:

Эта проблема связана с тем, что базовый драйвер использует REST API вместо выполнения запроса Cypher. В качестве обходного пути (на момент этого ответа) существует ветвь 1.5-dev NeoEloquent, которая использует другой драйвер, и она будет использоваться для запуска Cypher в базе данных. Эта ветвь все еще находится в стадии разработки, но в настоящее время полностью обратно совместима.

Чтобы установить его, добавьте версию dev-1.5-dev в свой composer.json файл и запустите composer update vinelab/neoeloquent .