protected static function columns(JsonApiSerializer $serializer, array $fields)
{
$filterColumns = [];
foreach ($serializer->getTransformer()->getMappings() as $mapping) {
$classAlias = $mapping->getClassAlias();
if (!empty($fields[$classAlias])) {
$className = $mapping->getClassName();
$aliased = $mapping->getAliasedProperties();
/** @var \Illuminate\Database\Eloquent\Model $model * */
$model = new $className();
$columns = $fields[$classAlias];
if (count($aliased) > 0) {
$columns = str_replace(array_values($aliased), array_keys($aliased), $columns);
}
foreach ($columns as &$column) {
$filterColumns[] = sprintf('%s.%s', $model->getTable(), $column);
}
$filterColumns[] = sprintf('%s.%s', $model->getTable(), $model->getKeyName());
}
}
return count($filterColumns) > 0 ? $filterColumns : ['*'];
}