PHP code example of iqbalatma / laravel-service-repo

1. Go to this page and download the library: Download iqbalatma/laravel-service-repo 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/ */

    

iqbalatma / laravel-service-repo example snippets




namespace App\Repositories;
use Iqbalatma\LaravelServiceRepo\BaseRepository;
use Illuminate\Database\Eloquent\Builder;
use App\Models\User;

class UserRepository extends BaseRepository
{

     /**
     * use to set base query builder
     * @return Builder
     */
    public function getBaseQuery(): Builder
    {
        return User::query();
    }

    /**
     * use this to add custom query on filterColumn method
     * @return void
     */
    public function applyAdditionalFilterParams(): void
    {
    }
}



namespace App\Services\Management;

use Iqbalatma\LaravelServiceRepo\BaseService;
use App\Repositories\UserRepository;
use Illuminate\Pagination\LengthAwarePaginator;

class UserService extends BaseService
{

    public function getAllDataPaginated():LengthAwarePaginator
    {
        return UserRepository::getAllDataPaginated();
    }
}



namespace App\Services\Management;

use Iqbalatma\LaravelServiceRepo\BaseService;
use App\Repositories\UserRepository;
use Illuminate\Pagination\LengthAwarePaginator;

class UserService extends BaseService
{

    public function getAllDataPaginated():LengthAwarePaginator
    {
        return (new UserRepository())->getAllDataPaginated();
    }
}


function getAllDataPaginated(array $whereClause = [], array $columns = ["*"]);
function getAllData(array $whereClause = [], array $columns = ["*"]);
function getDataById(string|int|array $id, array $columns = ["*"]);
function getSingleData(array $whereClause = [], array $columns = ["*"]);
function addNewData(array $requestedData);
function updateDataById(string|int $id, array $requestedData, array $columns = ["*"], bool $isReturnObject = true);
function updateDataByWhereClause(array $whereClause, array $requestedData, array $columns = ["*"], bool $isReturnObject = false);
function deleteDataById(string|int $id);
function deleteDataByWhereClause(array $whereClause);


function with(array|string $relations);
function without(array|string $relations);
function withAvg(array|string $relation, string $column);
function withCount(mixed $relations);
function withMin(array|string $relation, string $column);
function withMax(array|string $relation, string $column)
function withSum(array|string $relation, string $column);
function has(Relation|string $relation, string $operator = '>=', int $count = 1, string $boolean = 'and', Closure|null $callback = null);
function whereHas(string $relation, Closure|null $callback = null, string $operator = '>=', int $count = 1);

and other method ....



namespace App\Services\Management;

use Iqbalatma\LaravelServiceRepo\BaseService;
use App\Repositories\UserRepository;
use Illuminate\Pagination\LengthAwarePaginator;

class UserService extends BaseService
{

    public function getAllDataPaginated():LengthAwarePaginator
    {
        return UserRepository::with('profile')->getAllDataPaginated();
    }
}



namespace App\Repositories;
use Iqbalatma\LaravelServiceRepo\BaseRepository;
use Illuminate\Database\Eloquent\Builder;
use App\Models\User;

class UserRepository extends BaseRepository
{

     /**
     * use to set base query builder
     * @return Builder
     */
    public function getBaseQuery(): Builder
    {
        return User::query();
    }

    /**
     * use this to add custom query on filterColumn method
     * @return void
     */
    public function applyAdditionalFilterParams(): void
    {
    }

    public function queryGetAllActiveUser(){
          return $this->builder->where('status', 'active')->get();
    }
}



namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Builder;


class Tag extends Model
{
    use HasFactory;

    protected $fillable = [
        "name"
    ];

    public function scopeActive(Builder $query){
        $query->where('status', '=', 'active');
    }    
}



namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;


class User extends Model
{
    use HasFactory;

    public array $orderableColumns = [
        "name" => "users.name",
        "address" => "users.address",
    ];
}



namespace App\Services\Management;

Iqbalatma\LaravelServiceRepo\BaseService;
use App\Repositories\UserRepository;

class UserService extends BaseService
{
    public function getAllDataPaginated(){
        return UserRepository::orderColumn()->getAllDataPaginated();
    }
}



namespace App\Services\Management;

Iqbalatma\LaravelServiceRepo\BaseService;
use App\Repositories\UserRepository;

class UserService extends BaseService
{
    public function getAllDataPaginated(){
        return UserRepository::orderColumn([
            "name" => "users.name",
            "address" => "users.address",
        ])->getAllDataPaginated();
    }
}



namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;


class User extends Model
{
    use HasFactory;

    public array $filterableColumns = [
        "name" => "users.name",
        "address" => "users.address",
    ];
}



namespace App\Services\Management;

Iqbalatma\LaravelServiceRepo\BaseService;
use App\Repositories\UserRepository;

class UserService extends BaseService
{
    public function getAllDataPaginated(){
        return UserRepository::orderColumn()->filterColumn()->getAllDataPaginated();
    }
}



namespace App\Services\Management;

Iqbalatma\LaravelServiceRepo\BaseService;
use App\Repositories\UserRepository;

class UserService extends BaseService
{
    public function getAllDataPaginated(){
        return UserRepository::orderColumn()->filterColumn([
            "name" => "users.name",
            "address" => "users.address",
        ])->getAllDataPaginated();
    }
}



namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use App\Models\Profile;

class User extends Model
{
    use HasFactory;

    public array $filterableColumns = [
        "name" => "users.name",
        "address" => "users.address",
    ];

    public array $relationFilterableColumns = [
        "profile" => [
            "phone" => "profiles.pone"
        ]
    ];

    public function profile(){
        return $this->belongsTo(Profile::class);
    }   
}



namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;


class User extends Model
{
    use HasFactory;

    public array $filterableColumns = [
        "name" => [
            "column" => "users.name"
            "operator" => "like"
        ],
        "address" => "users.address",
    ];
}

php artisan make:service UserService

php artisan make:repository UserRepository