PHP code example of lerouse / laravel-repository

1. Go to this page and download the library: Download lerouse/laravel-repository library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

lerouse / laravel-repository example snippets


\Lerouse\LaravelRepository\LaravelRepositoryServiceProvider::class,

'namespace' => '\App\Repositories\Model',

'namespace' => '\App\Model\Repositories',
 



namespace App\Repositories\Models;

use Illuminate\Database\Eloquent\Builder;
use Lerouse\LaravelRepository\EloquentRepository;
use App\Models\User;

class UserRepository extends EloquentRepository
{

    /**
     * Get the Repository Query Builder
     *
     * @return Builder
     */
    public function builder(): Builder
    {
        return User::query();
    }

}
 



namespace App\Http\Controllers;

use Illuminate\Database\Eloquent\Builder;

class UserController
{

    /**
     * Get the Repository Query Builder
     *
     * @return Builder
     */
    public function index(): Builder
    {
        $repository = new UserRepository;

        return $repository->all(); 
    }

}



namespace App\Repositories\Models;

use Illuminate\Contracts\Pagination\LengthAwarePaginator;
use Illuminate\Database\Eloquent\Builder;
use Lerouse\LaravelRepository\EloquentRepository;
use Illuminate\Database\Eloquent\Collection;
use App\Models\Team;
use App\Models\User;

class UserRepository extends EloquentRepository
{
    
    /**
     * Get all models as Paginated Results
     *
     * @param int|null $limit
     * @param int $page
     * @return LengthAwarePaginator
     */
    public function paginate(int $limit = null, int $page = 1): LengthAwarePaginator
    {
        return $this->builder()
                    ->orderBy($this->getModelTable() . '.created_at', 'desc')
                    ->paginate($limit ?? 25, $page);
    }

    /**
     * Get active Users
     *
     * @return Collection
     */
    public function active(): Collection
    {
        return $this->builder()
                    ->where($this->getModelTable() . 'active', '=', true)
                    ->orderBy($this->getModelTable() . '.created_at', 'desc')
                    ->get();
    }

    /**
     * Get the Repository Query Builder
     *
     * @return Builder
     */
    public function builder(): Builder
    {
        return User::query()
                    ->select($this->getModelTable() . '.*')
                    ->selectRaw('teams.name as user_team_name')
                    ->leftJoin('teams', 'teams.id', '=', $this->getModelTable() . '.team_id');
    }

}
 



namespace App\Http\Controllers;

use Illuminate\Database\Eloquent\Model;
use Lerouse\LaravelRepository\HasRepository;

class User extends Model
{
    use HasRepository;
}



namespace App\Http\Controllers;

use App\Http\Controllers\Controller;
use Illuminate\Database\Eloquent\Builder;

class UserController extends Controller
{

    /**
     * Get the Repository Query Builder
     *
     * @return Builder
     */
    public function show(User $user): Builder // binding resolved through the UserRepository's find method 
    {
        return $user; 
    }

}

'namespace' => '\App\Repositories\Model',
bash
php composer 
bash
php artisan vendor:publish --tag=repository-config