PHP code example of ykaej / simple-repository

1. Go to this page and download the library: Download ykaej/simple-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/ */

    

ykaej / simple-repository example snippets



namespace App\Repositories\Eloquent;

use Ykaej\Repository\Eloquent\BaseRepository;
use App\Models\Post;

class PostRepository extends BaseRepository
{
    public function model()
    {
        return Post::class;
    }
}


namespace App\Http\Controllers;

use App\Repositories\Eloquent\PostRepository;

class PostController extends Controller
{
    protected $post;
    
    public function __construct(PostRepository $post)
    {
        $this->post = $post;
    }

    public function index()
    {
        $this->post->all();
    }
}

    public function all($columns = ['*']);  //获取所有记录
    
    public function paginate($limit = null, $columns = ['*']);  //分页, 默认可以再 `repository.php` 中调 
        
    public function find($id, $columns = ['*']);    //按id查找
    
    public function findOrFail($id, $columns = ['*']); //按id查找
    
    public function findByField($field, $value = null, $columns = ['*']);   //按指定字段查找
    
    public function findWhere(array $where, $columns = ['*']);  //按多个条件查找
    
    public function findWhereIn($field, array $values, $columns = ['*']);   
    
    public function findWhereNotIn($field, array $values, $columns = ['*']);
    
    public function create(array $attributes);  //创建一条数据
    
    public function update(array $attributes, $id); //修改一条数据
    
    public function updateBatch(array $multipleData);   //批量修改
    
    public function delete($id);    //删除
    
    public function forceDelete();    //永久删除
    
    public function deleteWhere(array $where);  //按条件删除
    
    public function deleteWhereIn($field, array $values);
    
    public function increment(string $name, int $amount = 1);
    
    public function decrement(string $name, int $amount = 1);
    
    public function has($relation); //数据关联
    
    public function with($relations);   //数据关联
    
    public function withCount($relations);  //关联数据计数
    
    public function whereHas($relation, $closure);  //关联查找
    
    public function orderBy($column, $direction = 'asc');
    
    public function where($field, $condition, $value = null, $boolean = 'and');
    
    public function whereIn($field, array $values);

$this->post->create(Input::all());

$this->post->update(Input::all(),$id);

$data =[
 ['id' => 1, 'name' => '张三', 'email' => '[email protected]'],
 ['id' => 2, 'name' => '李四', 'email' => '[email protected]'],
 ...
];
$this->post->updateBatch($data);

$this->post->find($id,['id','title','body']);

$this->post->findByField('title',$title);

$this->post->findWhere([
    'author' => $author_id,
    ['year','>',$year]
]);

$this->post->whereIn('id',[1,2,3])->forceDelete();

$this->post->whereIn('id',[5,6])->increment('count',2);

php artisan make:criteria Post


namespace App\Repositories\Criteria;

use Ykaej\Repository\Contracts\RepositoryInterface;
use Ykaej\Repository\Criteria\Criteria;

class UnHiddenCriteria extends Criteria
{
    public function apply($model, RepositoryInterface $repository)
    {
        return $model->where('is_hidden','F');
    }
}


namespace App\Http\Controllers;

use App\Repositories\Eloquent\PostRepository;
use App\Repositories\Criteria\UnHiddenCriteria;

class PostController extends Controller
{
    protected $post;
    
    public function __construct(PostRepository $post)
    {
        $this->post = $post;
    }

    public function index()
    {
        $this->post->pushCriteria(new UnHiddenCriteria());
        $this->post->all();
    }
}

`PostRepository`

public function boot()
{
    $this->pushCriteria(new UnHiddenCriteria());
}

php artisan vendor:publish --provider "Ykaej\Repository\Providers\RepositoryProvider"

php artisan make:repository Post --model=Post