l5-repository基本使用

一、安装

composer require prettus/l5-repository

二、Model层:Warehouse.php

<?php

namespace App\Model;

use Illuminate\Database\Eloquent\Model;

class Warehouse extends Model
{
    /**
     * The attributes that are mass assignable.
     *
     * @var array
     */
    protected $fillable = [];
    protected $table = "supplier_warehouse";
    protected $primaryKey = 'g_w_id';
    public $timestamps = false;
}

三、仓库的两个文件:

3.1、文件及位置

3.2、WarehouseRepository.php:

<?php

namespace App\Repositories;

use Prettus\Repository\Contracts\RepositoryInterface;

/**
 * Interface ShopRepository.
 *
 * @package namespace App\Repositories;
 */
interface WarehouseRepository extends RepositoryInterface
{
    public function getIdsByCmpId($cmpId, $sel);
    public function getNameById($g_w_id, $sel);
}

3.3、WarehouseRepositoryEloquent.php:

<?php

namespace App\Repositories;

use App\Model\Warehouse;
use Illuminate\Support\Facades\DB;
use Prettus\Repository\Eloquent\BaseRepository;

/**
 * Class ShopRepositoryEloquent.
 *
 * @package namespace App\Repositories;
 */
class WarehouseRepositoryEloquent extends BaseRepository implements WarehouseRepository
{
    /**
     * Specify Model class name
     *
     * @return string
     */
    public function model()
    {
        return Warehouse::class;
    }

    public function getIdsByCmpId($cmpId, $sel)
    {
        return $this->model
            ->select(DB::raw(implode(',',$sel)))
            ->where('company_id',$cmpId)
            ->get();
    }

    public function getNameById($g_w_id, $sel)
    {
        return $this->model
            ->select(DB::raw(implode(',',$sel)))
            ->where('g_w_id',$g_w_id)
            ->get();
    }
}

四、绑定:

4.1、文件及位置:

4.2、RepositoryServiceProvider.php:

$this->app->bind(\App\Repositories\WarehouseRepository::class, \App\Repositories\WarehouseRepositoryEloquent::class);

五、services

5.1、文件及位置:

5.2、WarehouseService.php:

<?php

namespace App\Services;

class WarehouseService
{
    private $warehouseRepository;

    public function __construct($warehouseRepository)
    {
        $this->warehouseRepository = $warehouseRepository;
    }

    public function getIdsByCmpId($cmpId)
    {
        return $this->warehouseRepository->getIdsByCmpId($cmpId, ['g_w_id']);
    }

    public function getNameById($g_w_id)
    {
        return $this->warehouseRepository->getNameById($g_w_id, ['warehouse_name']);
    }
}

六、控制器中调用:

6.1、文件及位置

6.2、WarehouseController.php

<?php

namespace App\Http\Controllers\Warehouse;

use App\Repositories\WarehouseRepository;
use App\Services\WarehouseService;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;

class WarehouseController extends Controller
{
    private $warehouseService;

    public function __construct(WarehouseRepository $warehouseRepository)
    {
        $this->warehouseService = new WarehouseService($warehouseRepository);
    }

    public function test()
    {
        $cmpId = 1016;
        $listWarehouse = $this->warehouseService->getIdsByCmpId($cmpId);
    }
}

 七、在config/app.php上加载组件:

代码:

App\Providers\RepositoryServiceProvider::class,

 其他随笔l5-repository基本使用--结合使用artisan

posted @ 2018-11-07 18:34  郑楚周  阅读(2169)  评论(0编辑  收藏  举报