AddStoredToStatementRoot::up PHP Метод

up() публичный Метод

Run the migrations.
public up ( ) : void
Результат void
    public function up()
    {
        set_time_limit(0);
        $db = \DB::getMongoDB();
        $statementsCollection = new MongoCollection($db, 'statements');
        $statementsCollection->createIndex(['stored' => 1], ['background' => 1, 'socketTimeoutMS' => -1]);
        $statementsCollection->createIndex(['stored' => -1], ['background' => 1, 'socketTimeoutMS' => -1]);
        $statementsCollection->createIndex(['lrs_id' => 1, 'stored' => 1], ['background' => 1, 'socketTimeoutMS' => -1]);
        $statementsCollection->createIndex(['lrs_id' => 1, 'stored' => -1], ['background' => 1, 'socketTimeoutMS' => -1]);
        $statementsCursor = $statementsCollection->find();
        $remaining = $statementsCursor->count();
        print $remaining . ' statements total' . PHP_EOL;
        $maxBatchSize = 10000;
        while ($statementsCursor->hasNext()) {
            $batch = new MongoUpdateBatch($statementsCollection);
            $batchSize = 0;
            while ($batchSize < $maxBatchSize && $statementsCursor->hasNext()) {
                $batchSize++;
                $statement = $statementsCursor->next();
                $statementStored = new Carbon\Carbon($statement['statement']['stored']);
                $query = ['q' => ['_id' => $statement['_id']], 'u' => ['$set' => ["stored" => new \MongoDate($statementStored->timestamp, $statementStored->micro)]], 'multi' => false, 'upsert' => false];
                if (isset($statement['refs'])) {
                    foreach ($statement['refs'] as $key => $refStatement) {
                        if (isset($refStatement['timestamp']) && !$refStatement['timestamp'] instanceof MongoDate) {
                            $timestamp = new Carbon\Carbon($refStatement['timestamp']);
                            $query['u']['$set']['refs.' . $key . '.timestamp'] = new \MongoDate($timestamp->timestamp, $timestamp->micro);
                        }
                        if (isset($refStatement['stored']) && !$refStatement['stored'] instanceof MongoDate) {
                            $stored = new Carbon\Carbon($refStatement['stored']);
                            $query['u']['$set']['refs.' . $key . '.stored'] = new \MongoDate($stored->timestamp, $stored->micro);
                        }
                    }
                }
                $batch->add((object) $query);
            }
            $batch->execute();
            $remaining -= $batchSize;
            print $remaining . ' remaining' . PHP_EOL;
        }
    }
AddStoredToStatementRoot