%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /var/www/html/news/app/Repositories/Base/
Upload File :
Create Path :
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;
    }


}

Zerion Mini Shell 1.0