From 99d42076a6dc2f967aa90ed3fe43f51d6462d2e6 Mon Sep 17 00:00:00 2001 From: "Ilya Rumyancev (MacBook)" Date: Fri, 14 Apr 2017 13:49:11 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=20=D1=80=D1=83=D1=81=D1=81=D0=BA=D0=B8=D0=B9=20Readme?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.RU.md | 207 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 207 insertions(+) create mode 100644 README.RU.md diff --git a/README.RU.md b/README.RU.md new file mode 100644 index 0000000..dad7e59 --- /dev/null +++ b/README.RU.md @@ -0,0 +1,207 @@ +Коннектор ArangoDb PHP для Yii 2 +=========================== + +Это расширение [ArangoDB](http://www.arangodb.org/) обеспечивает интеграцию в фрэймворком Yii2. + + +Установка +------------ + +Это расширение требует [ArangoDB PHP Extension](https://github.com/triAGENS/ArangoDB-PHP) + +Предпочтительный способ установки с помощью [composer](http://getcomposer.org/download/). + +Или запустить команду + +``` +php composer.phar require --prefer-dist explosivebit/yii2-arangodb "*" +``` + +или добавить в файл "composer.json" + +``` +"explosivebit/yii2-arangodb": "*" +``` + + +Использование +------------- + +Чтобы использовать это расширение, просто добавьте следующий код в конфигурацию вашего приложения: + +```php +return [ + //.... + 'components' => [ + 'arangodb' => [ + 'class' => '\explosivebit\arangodb\Connection', + 'connectionOptions' => [ + triagens\ArangoDb\ConnectionOptions::OPTION_DATABASE => "mydatabase", + triagens\ArangoDb\ConnectionOptions::OPTION_ENDPOINT => 'tcp://127.0.0.1:8529', + triagens\ArangoDb\ConnectionOptions::OPTION_AUTH_TYPE => 'Basic', + //triagens\ArangoDb\ConnectionOptions::OPTION_AUTH_USER => '', + //triagens\ArangoDb\ConnectionOptions::OPTION_AUTH_PASSWD => '', + ], + ], + ], +]; +``` + +С помощью экземпляра подключения вы можете обращаться к базам данных, коллекциям и документам. + +Для выполнения запросов «search» вы должны использовать следующий класс `\explosivebit\arangodb\Query`: + +```php +use explosivebit\arangodb\Query; + +$query = new Query; +// compose the query +$query->select(['name', 'status']) + ->from('customer') + ->limit(10); +// execute the query +$rows = $query->all(); +``` + + +Использование ActiveRecord ArangoDB +------------------------------ + +Этот клас обеспечивает аналогичное решение yii2 ActiveRecord, `\yii\db\ActiveRecord`. +Чтобы объявить класс ActiveRecord, вам необходимо расширить `\explosivebit\arangodb\ActiveRecord` и +реализовать методы `collectionName` и `attributes`: + +```php +use explosivebit\arangodb\ActiveRecord; + +class Customer extends ActiveRecord +{ + /** + * @return string the name of the index associated with this ActiveRecord class. + */ + public static function collectionName() + { + return 'customer'; + } + + /** + * @return array list of attribute names. + */ + public function attributes() + { + return ['_key', 'name', 'email', 'address', 'status']; + } +} +``` + +Примечание: имя первичного ключа ('_key') любой коллекции должно всегда присутствовать и настроено как атрибут. + +Вы можете использовать `\yii\data\ActiveDataProvider` c `\explosivebit\arangodb\Query` а также `\explosivebit\arangodb\ActiveQuery`: + +```php +use yii\data\ActiveDataProvider; +use explosivebit\arangodb\Query; + +$query = new Query; +$query->from('customer')->where(['status' => 2]); +$provider = new ActiveDataProvider([ + 'query' => $query, + 'pagination' => [ + 'pageSize' => 10, + ] +]); +$models = $provider->getModels(); +``` + +```php +use yii\data\ActiveDataProvider; +use app\models\Customer; + +$provider = new ActiveDataProvider([ + 'query' => Customer::find(), + 'pagination' => [ + 'pageSize' => 10, + ] +]); +$models = $provider->getModels(); +``` + + +Использование миграций +---------------- + +ArangoDB миграции осуществляются через `explosivebit\arangodb\console\controllers\MigrateController`, который является аналогом стандартных миграций yii2 +`\yii\console\controllers\MigrateController`. + +Чтобы включить миграции в ваше приложение , вы должны настроить конфигурацию консольного приложения: + +```php +return [ + // ... + 'controllerMap' => [ + 'arangodb-migrate' => 'explosivebit\arangodb\console\controllers\MigrateController' + ], +]; +``` + +Ниже приведены примеры использования некоторых команд + +``` +# создание новой миграции user 'create_user_collection' +yii arangodb-migrate/create create_user_collection + +# применить все новые миграции +yii arangodb-migrate + +# применить 1у миграцию +yii arangodb-migrate/up 1 + +# откатить все миграции +yii arangodb-migrate/down + +# откатить 1у миграцию +yii arangodb-migrate/down 1 +``` + +После создания можно настроить миграции: + +При запуске миграции как в примера ниже создается обычная `document` коллекция с именем миграции, для создания `edge` коллекции необходимо прописать дополнительный параметр `Type => 3`. +Пример такого запроса: `$this->createCollection('serices',['Type' => 3]);`. Если нужно создать `document` коллекцию то удалите параметр `'Type' => 3` или вместо цифры 3 встаьте 2. + +``` +class m170413_210957_create_services_collection extends \explosivebit\arangodb\Migration +{ + public function up() + { + # При запуске миграции создается коллекция "services" с типом edge + $this->createCollection('serices',['Type' => 3]); + } + + public function down() + { + # При запуске отката миграции удаляется коллекция "services" + $this->dropCollection('services'); + } +} +``` + +Использование Debug Panel +----------------- + +Добавьте панель ArangoDb в вашу конфигурацию `yii\debug\Module` + +```php +return [ + 'bootstrap' => ['debug'], + 'modules' => [ + 'debug' => 'yii\debug\Module', + 'panels' => [ + 'arango' => [ + 'class' => 'explosivebit\arangodb\panels\arangodb\ArangoDbPanel', + ], + ], + ... + ], + ... +]; +```