Skip to main content

Additional method overrides

Apart from the required methods that have to be implemented, API controllers also include other methods than can be overriden.

modifyModel()

This method can be used to set additional attributes or hide specific attributes on the model before returning the results.

public function modifyModel(Model $model): Model
{
$model->setHidden('media');

$model->some_random_fake_attribute = 'some value';

return $model;
}

authorizeView()

Set authorization on the show endpoint.

protected function authorizeView(Model $model): void
{
$this->authorize('view', $model);
}

getFieldsToAlwaysInclude

Specifies which fields to always include, regardless of what the user provides in the ?fields= query parameter. By default this is set to return the id field.

public function getFieldsToAlwaysInclude(): array
{
return [
'id'
];
}

getIndexAllowedFields

Override this method if you want to allow different fields just for the index endpoint.

public function getIndexAllowedFields(): array
{
return $this->getAllowedFields();
}

getIndexValidation

Override this method to specify any validation rules to run for the index endpoint. The default validation rules are given below.

protected function getIndexValidation(): array
{
return [
'per_page' => "integer|" . ($this->allowUnlimitedResultsPerPage() ? 'min:-1' : 'between:1,' . $this->getMaxPerPage()),
'page' => 'integer|min:1',
];
}

getShowValidation

Override this method to specify any validation rules to run for the show endpoint. The default validation rules are given below.

protected function getShowValidation(): array
{
return [];
}

getShowAllowedAppends

Override this method if you want to specify specific appends just for the show endpoint. These will be merged with the getAllowedAppends.

public function getShowAllowedAppends(): array
{
return [];
}

getAllShowAllowedAppends

Override this method if you want to specify specific appends just for the show endpoint without merging with the getAllowedAppends.

public function getAllShowAllowedAppends(): array
{
return [
'formatted_name',
];
}