public function execute()
 {
     $table = new ConpherenceParticipant();
     $conn_r = $table->establishConnection('r');
     $rows = queryfx_all($conn_r, 'SELECT COUNT(*) as count, participantPHID ' . 'FROM %T participant %Q %Q %Q', $table->getTableName(), $this->buildWhereClause($conn_r), $this->buildGroupByClause($conn_r), $this->buildLimitClause($conn_r));
     return ipull($rows, 'count', 'participantPHID');
 }
 public function execute()
 {
     $table = new ConpherenceParticipant();
     $conn_r = $table->establishConnection('r');
     $data = queryfx_all($conn_r, 'SELECT * FROM %T participant %Q %Q %Q', $table->getTableName(), $this->buildWhereClause($conn_r), $this->buildOrderClause($conn_r), $this->buildLimitClause($conn_r));
     $participants = $table->loadAllFromArray($data);
     $participants = mpull($participants, null, 'getConpherencePHID');
     if ($this->order == self::ORDER_NEWER) {
         $participants = array_reverse($participants);
     }
     return $participants;
 }
<?php

echo pht("Migrating data from conpherence transactions to conpherence 'cache'...\n");
$table = new ConpherenceThread();
$table->openTransaction();
$conn_w = $table->establishConnection('w');
$participant_table = new ConpherenceParticipant();
$conpherences = new LiskMigrationIterator($table);
foreach ($conpherences as $conpherence) {
    echo pht('Migrating conpherence #%d', $conpherence->getID()) . "\n";
    $participants = id(new ConpherenceParticipant())->loadAllWhere('conpherencePHID = %s', $conpherence->getPHID());
    $transactions = id(new ConpherenceTransaction())->loadAllWhere('objectPHID = %s', $conpherence->getPHID());
    $participation_hash = mgroup($participants, 'getBehindTransactionPHID');
    $message_count = 0;
    $participants_to_cache = array();
    foreach ($transactions as $transaction) {
        $participants_to_cache[] = $transaction->getAuthorPHID();
        if ($transaction->getTransactionType() == PhabricatorTransactions::TYPE_COMMENT) {
            $message_count++;
        }
        $participants_to_update = idx($participation_hash, $transaction->getPHID(), array());
        if ($participants_to_update) {
            queryfx($conn_w, 'UPDATE %T SET seenMessageCount = %d ' . 'WHERE conpherencePHID = %s AND participantPHID IN (%Ls)', $participant_table->getTableName(), $message_count, $conpherence->getPHID(), mpull($participants_to_update, 'getParticipantPHID'));
        }
    }
    $participants_to_cache = array_slice(array_unique(array_reverse($participants_to_cache)), 0, 10);
    queryfx($conn_w, 'UPDATE %T ' . 'SET recentParticipantPHIDs = %s, ' . 'messageCount = %d ' . 'WHERE phid = %s', $table->getTableName(), json_encode($participants_to_cache), $message_count, $conpherence->getPHID());
}
$table->saveTransaction();
echo "\n" . pht('Done.') . "\n";