yii\elasticsearch\ActiveRecord::getDb PHP Method

getDb() public static method

By default, the "elasticsearch" application component is used as the database connection. You may override this method if you want to use a different database connection.
public static getDb ( ) : Connection
return Connection the database connection used by this AR class.
    public static function getDb()
    {
        return \Yii::$app->get('elasticsearch');
    }

Usage Example

Exemplo n.º 1
0
 /**
  * @param $documentClass \gromver\platform\common\models\elasticsearch\ActiveDocument
  * @return int
  * @throws \yii\elasticsearch\Exception
  */
 public function upload($documentClass)
 {
     $bulk = '';
     /** @var \yii\db\ActiveRecord|string $modelClass */
     $modelClass = $documentClass::model();
     /** @var \gromver\platform\common\models\elasticsearch\ActiveDocument $document */
     $document = new $documentClass();
     $uploaded = 0;
     foreach ($modelClass::find()->each() as $model) {
         /** @var \yii\db\ActiveRecord $model */
         $action = Json::encode(["index" => ["_id" => $model->getPrimaryKey(), "_type" => $documentClass::type(), "_index" => $documentClass::index()]]);
         $document->loadModel($model);
         $data = Json::encode($document->toArray());
         $bulk .= $action . "\n" . $data . "\n";
         $uploaded++;
     }
     $url = [$documentClass::index(), $documentClass::type(), '_bulk'];
     $response = ActiveRecord::getDb()->post($url, [], $bulk);
     $n = 0;
     $errors = [];
     foreach ($response['items'] as $item) {
         if (isset($item['index']['status']) && ($item['index']['status'] == 201 || $item['index']['status'] == 200)) {
             $n++;
         } else {
             $errors[] = $item['index'];
         }
     }
     if (!empty($errors) || isset($response['errors']) && $response['errors']) {
         throw new Exception(__METHOD__ . ' failed inserting ' . $modelClass . ' model records.', $errors);
     }
     return $n;
 }
All Usage Examples Of yii\elasticsearch\ActiveRecord::getDb