D7net
Home
Console
Upload
information
Create File
Create Folder
About
Tools
:
/
home
/
forge
/
hms.dentostock.com
/
app
/
Repositories
/
Filename :
BaseRepository.php
back
Copy
<?php namespace App\Repositories; use Illuminate\Container\Container as Application; use Illuminate\Database\Eloquent\Model; abstract class BaseRepository { protected $model; protected $app; public function __construct(Application $app) { $this->app = $app; $this->makeModel(); } abstract public function getFieldsSearchable(); abstract public function model(); 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; } public function paginate($perPage, $columns = ['*']) { $query = $this->allQuery(); return $query->paginate($perPage, $columns); } 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; } public function all($search = [], $skip = null, $limit = null, $columns = ['*']) { $query = $this->allQuery($search, $skip, $limit); return $query->get($columns); } public function create($input) { $model = $this->model->newInstance($input); $model->save(); return $model; } public function find($id, $columns = ['*']) { $query = $this->model->newQuery(); return $query->find($id, $columns); } public function update($input, $id) { $query = $this->model->newQuery(); $model = $query->findOrFail($id); $model->fill($input); $model->save(); return $model; } public function delete($id) { $query = $this->model->newQuery(); $model = $query->findOrFail($id); return $model->delete(); } }