/
marklis
/
transport
Обзор
Документация
Войти
/
marklis
/
transport
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
app/Repositories/EntityRepository.php
106 строк
3 KB
Мамонов Алексей Анатольевич
Заявки и пользователи
12 дек 2023, 13:21
12 дек 2023, 13:21
895fcda
Код
Авторство
О чём код?
<?php namespace App\Repositories; use Illuminate\Support\Collection; use Illuminate\Database\Eloquent\Model; use Illuminate\Pagination\LengthAwarePaginator; abstract class EntityRepository extends CoreRepository { protected $model; public function __construct($model) { $this->model = $model; } public function find(array|Collection $columns = [], array|Collection $parameters = []): Model|null { $query = $this->model; if ($columns) { $query = $query->select($columns); } if ($parameters) { foreach ($parameters as $key => $parameter) { if ($key === 'created_at') { $query = $query->where($key, $parameter[0], $parameter[1]); } else { if (is_array($parameter)) { $query = $query->whereIn($key, $parameter); } else { $query = $query->where($key, $parameter); } } } } return $query->first(); } public function get( array|Collection $columns = [], array|Collection $parameters = [], string|null $orderBy = null, string $sortingDirection = 'asc' ): Collection { $query = $this->model; if ($columns) { $query = $query->select($columns); } if ($parameters) { foreach ($parameters as $key => $parameter) { if (is_array($parameter)) { $query = $query->whereIn($key, $parameter); } else { $query = $query->where($key, $parameter); } } } if ($orderBy) { $query = $query->orderBy($orderBy, $sortingDirection); } return $query->get(); } public function paginate( array|Collection $columns = [], array|Collection $parameters = [], int $perPage = 20, string|null $orderBy = null, string $sortingDirection = 'asc' ): LengthAwarePaginator { $query = $this->model; if ($columns) { $query = $query->select($columns); } if ($parameters) { foreach ($parameters as $key => $parameter) { if (is_array($parameter)) { $query = $query->whereIn($key, $parameter); } else { $query = $query->where($key, $parameter); } } } if ($orderBy) { $query = $query->orderBy($orderBy, $sortingDirection); } return $query->paginate($perPage); } public function create(array $data): Model { return $this->model::create($data); } public function update(int|string $id, array $data): bool { $model = $this->find([], ['id' => $id]); return $model->update($data); } public function delete(int|string $id): bool { $model = $this->find([], ['id' => $id]); return $model->delete(); } }