%PDF- %PDF-
Direktori : /var/www/html/news/app/Repositories/Base/ |
Current File : /var/www/html/news/app/Repositories/Base/BaseEloquentRepository.php |
<?php namespace App\Repositories\Base; use App\Repositories\Base\Criteria\OrderByCriteria; use App\Repositories\Base\Criteria\SearchCriteria; use Czim\Repository\ExtendedPostProcessingRepository; use Czim\Repository\Traits\HandlesEloquentRelationManipulationTrait; use Czim\Repository\Traits\HandlesEloquentSavingTrait; use Illuminate\Container\Container; use Illuminate\Http\Request; use Illuminate\Support\Collection; abstract class BaseEloquentRepository extends ExtendedPostProcessingRepository implements BaseRepository { use HandlesEloquentSavingTrait, HandlesEloquentRelationManipulationTrait; protected $perPage = 10; /** * @var \Illuminate\Http\Request */ protected $request; protected $enableCache = false; public function __construct(Container $container, Collection $collection, Request $request = null) { parent::__construct($container, $collection); $this->request = $request ? $request : request(); } /** * @param int $perPage * @param array $columns * @param string $pageName * @param null $page * * @return \Illuminate\Contracts\Pagination\LengthAwarePaginator */ public function paginate($perPage = 10, $columns = ['*'], $pageName = 'page', $page = null) { $this->pushCriteriaOnce(new SearchCriteria()); $this->pushCriteriaOnce(new OrderByCriteria()); if ($perPage == 1) { $perPage = $this->perPage; } if ($this->request->has('perPage') && (int)$this->request->get('perPage') > 1) { $perPage = $this->request->get('perPage'); } return $this->query()->paginate($perPage, $columns, $pageName, $page); } public function generateUniqueString($columnName) { $string = bin2hex(openssl_random_pseudo_bytes(10)); $entity = $this->findBy($columnName, $string); if ($entity) { return $this->generateUniqueString($columnName); } return $string; } }