⚝
One Hat Cyber Team
⚝
Your IP:
216.73.216.19
Server IP:
178.33.27.10
Server:
Linux cpanel.dev-unit.com 3.10.0-1160.108.1.el7.x86_64 #1 SMP Thu Jan 25 16:17:31 UTC 2024 x86_64
Server Software:
Apache/2.4.57 (Unix) OpenSSL/1.0.2k-fips
PHP Version:
8.2.11
Buat File
|
Buat Folder
Eksekusi
Dir :
~
/
home
/
id
/
hospital.dev-unit.com
/
app
/
Repositories
/
View File Name :
BaseRepository.php
<?php namespace App\Repositories; use Illuminate\Container\Container as Application; use Illuminate\Database\Eloquent\Model; abstract class BaseRepository { /** * @var Model */ protected $model; /** * @var Application */ protected $app; /** * @throws \Exception */ public function __construct(Application $app) { $this->app = $app; $this->makeModel(); } /** * Get searchable fields array * * @return array */ abstract public function getFieldsSearchable(); /** * Configure the Model * * @return string */ abstract public function model(); /** * Make Model instance * * @return Model * * @throws \Exception */ public function makeModel() { $model = $this->app->make($this->model()); if (! $model instanceof Model) { throw new \Exception("Class {$this->model()} must be an instance of Illuminate\\Database\\Eloquent\\Model"); } return $this->model = $model; } /** * Paginate records for scaffold. * * @param int $perPage * @param array $columns * @return \Illuminate\Contracts\Pagination\LengthAwarePaginator */ public function paginate($perPage, $columns = ['*']) { $query = $this->allQuery(); return $query->paginate($perPage, $columns); } /** * Build a query for retrieving all records. * * @param array $search * @param int|null $skip * @param int|null $limit * @return \Illuminate\Database\Eloquent\Builder */ public function allQuery($search = [], $skip = null, $limit = null) { $query = $this->model->newQuery(); if (count($search)) { foreach ($search as $key => $value) { if (in_array($key, $this->getFieldsSearchable())) { $query->where($key, $value); } } } if (! is_null($skip)) { $query->skip($skip); } if (! is_null($limit)) { $query->limit($limit); } return $query; } /** * Retrieve all records with given filter criteria * * @param array $search * @param int|null $skip * @param int|null $limit * @param array $columns * @return \Illuminate\Contracts\Pagination\LengthAwarePaginator|\Illuminate\Database\Eloquent\Builder[]|\Illuminate\Database\Eloquent\Collection */ public function all($search = [], $skip = null, $limit = null, $columns = ['*']) { $query = $this->allQuery($search, $skip, $limit); return $query->get($columns); } /** * Create model record * * @param array $input * @return Model */ public function create($input) { $model = $this->model->newInstance($input); $model->save(); return $model; } /** * Find model record for given id * * @param int $id * @param array $columns * @return \Illuminate\Database\Eloquent\Builder|\Illuminate\Database\Eloquent\Builder[]|\Illuminate\Database\Eloquent\Collection|Model|null */ public function find($id, $columns = ['*']) { $query = $this->model->newQuery(); return $query->find($id, $columns); } /** * Update model record for given id * * @param array $input * @param int $id * @return \Illuminate\Database\Eloquent\Builder|\Illuminate\Database\Eloquent\Builder[]|\Illuminate\Database\Eloquent\Collection|Model */ public function update($input, $id) { $query = $this->model->newQuery(); $model = $query->findOrFail($id); $model->fill($input); $model->save(); return $model; } /** * @param int $id * @return bool|mixed|null * * @throws \Exception */ public function delete($id) { $query = $this->model->newQuery(); $model = $query->findOrFail($id); return $model->delete(); } }