Git Product home page Git Product logo

laravel-repository's Introduction

laravel-repository

repository用于抽象数据层,让我们的应用程序更易于维护。

安装

composer require lypzz/laravel-repository

Laravel

>= larave7

目录说明

Contracts : 定义查询的接口
Criteria :查询条件
Eloquent :model的映射
Exceptions :异常处理

Methods

LypZz\Repositories\Contracts\RepositoryInterface

public function all($columns = array('*'));
public function paginate($perPage = 1, $columns = array('*'), $pageName = 'page', $page = null);
public function create(array $data);
public function saveModel(array $data);
public function update(array $data, $id);
public function delete($id);
public function deleteWhere($where, $or = false);
public function find($id, $columns = array('*'));
public function findBy($field, $value, $columns = array('*'));
public function findAllBy($field, $value, $columns = array('*'));
public function findWhere($where, $columns = array('*'));

创建映射:

在Http里创建一个Repositories/Eloquent文件夹然后创建一个与model映射的Repository并且
继承LypZz\Repositories\Eloquent\Repository 

AsinRepository.php

namespace App\Repositories\Eloquent;

use LypZz\Repositories\Eloquent\Repository;
class AsinRepository extends Repository
{
    public function model() {
        return 'App\Models\Asin';
    }
}

控制器调用:

class IndexController extends Controller
{
    /**
     * @var $asinRepository AsinRepository
     */
    protected $asinRepository;

    public function __construct(AsinRepository $asinRepository)
    {

         $this->asinRepository = $asinRepository;
    }

    public function index()
    {
        
        #如果不选择注入的方式可以寻找app('App\Repositories\Eloquent\AsinRepository')这种方式获取
        //$this->asinRepository = app('App\Repositories\Eloquent\AsinRepository');
        #查询一条信息
        $id = 1;
        $this->asinRepository->find($id); //返回一个集合
        
        #查询所有信息
        $this->asinRepository->all();
        
        #分页查询
        $this->asinRepository->paginate(10,['*'],'page',1);
        
        #条件查询
        $this->asinRepository->findWhere(['asin'=>'B01KZ1J2CU','id'=>1],['*'],'or')
        
        #闭包条件查询
        $this->asinRepository->findWhere(['asin'=>function ($query)  {
            $query->where('id', 1);
            $query->orWhere('id', 3);
        }],['*'],'or');
        
        #with方式查询
        $this->asinRepository->with(['asinAddon'])->find(1)              
    }

Criteria方式查询,在Http里创建一个Repositories/Criteria文件夹并且创建文件IdMoreThanTwo.php

class IdMoreThanTwo extends Criteria
{
    public function apply($model, Repository $repository)
    {
        $model = $model->where('id','>', 2); #ID大于二的条件
        return $model;
    }
}

class IndexController extends Controller
{
    /**
     * @var $asinRepository AsinRepository
     */
    protected $asinRepository;

    public function __construct(AsinRepository $asinRepository)
    {

         $this->asinRepository = $asinRepository;
    }

    public function index()
    {
        $this->asinRepository = app('App\Repositories\Eloquent\AsinRepository');
        $this->asinRepository->pushCriteria(new IdMoreThanTwo());
        $this->asinRepository->all() #查出ID大于2的所有值
     }
  }

更新删除:

$this->asinRepository->update(['asin'=>'B01N909V8I'],564522);

$this->asinRepository->deleteWhere(['id' => 1]);

$this->asinRepository->create(['id' => 1]);

$this->asinRepository->saveModel(['id' => 1]);

laravel-repository's People

Contributors

leiyuanpu avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.