Есть тенженция делать БД как можно тоньше и не хранить в ней логику. Только данные.
Если валидацию сделать при вводе от пользователя, то внутри системы уже будут априори валидные значения. Одна проверка на входе и больше не проверем введенные данные никогда. Если сделать проверку по апдейту\инсерту записи в БД, то проверка будет делаться при каждом апдейте записи.
- логика должна лежать внутри репозитория с исходным кодом и не должна бэкапиться вместе с данными, а с тригерами это так не работает.
- производительность
- скрытая логика в неочевидном месте - это плохо.
- логика, размазанная по куче мест - это плохо. Всю необходимую валидацию в БД не сделать, а в бэкенде можно.Ну смутно могу представить что бы я не смог сделать в БД предоставленными инструментами. Как бы СУБД живут уже не один 10 лет, и чего только от них не требовалось за их жизнь.
public function paginate($perPage = null, $columns = ['*'], $pageName = 'page', $page = null)
{
$page = $page ?: Paginator::resolveCurrentPage($pageName);
$perPage = $perPage ?: $this->model->getPerPage();
$results = ($total = $this->toBase()->getCountForPagination())
? $this->forPage($page, $perPage)->get($columns)
: $this->model->newCollection();
return $this->paginator($results, $total, $perPage, $page, [
'path' => Paginator::resolveCurrentPath(),
'pageName' => $pageName,
]);
}
protected function paginator($items, $total, $perPage, $currentPage, $options)
{
return Container::getInstance()->makeWith(LengthAwarePaginator::class, compact(
'items', 'total', 'perPage', 'currentPage', 'options'
));
}