Yes I'm using it without any major issues.
In your case you have to modify the Threads model.
The colums are more or less hardcoded within the createSelectString and ParticipantsString methods.
public function participantsString($userId = null, $columns = ['name'])
{
$participantTable = $this->getParticipantTable();
$usersTable = $this->getUsersTable();
$selectString = $this->createSelectString($columns);
$participantNames = $this->getConnection()->table($usersTable)
->join($participantTable, $usersTable . '.id', '=', $participantTable . '.user_id')
->where($participantTable . '.thread_id', $this->id)
->select($this->getConnection()->raw($selectString));
if ($userId !== null) {
$participantNames->where($usersTable . '.id', '!=', $userId);
}
$userNames = $participantNames->lists($usersTable . '.name');
return implode(', ', $userNames);
}
---
protected function createSelectString($columns)
{
$dbDriver = $this->getConnection()->getDriverName();
$tablePrefix = $this->getConnection()->getTablePrefix();
$usersTable = $this->getUsersTable();
switch ($dbDriver) {
case 'pgsql':
case 'sqlite':
$columnString = implode(" || ' ' || " . $tablePrefix . $usersTable . '.', $columns);
$selectString = '(' . $tablePrefix . $usersTable . '.' . $columnString . ') as name';
break;
case 'sqlsrv':
$columnString = implode(" + ' ' + " . $tablePrefix . $usersTable . '.', $columns);
$selectString = '(' . $tablePrefix . $usersTable . '.' . $columnString . ') as name';
break;
default:
$columnString = implode(", ' ', " . $tablePrefix . $usersTable . '.', $columns);
$selectString = 'concat(' . $tablePrefix . $usersTable . '.' . $columnString . ') as name';
}
return $selectString;
}