一、安装
composer require prettus/l5-repository
二、Model层:Warehouse.php
<?php namespace AppModel; use IlluminateDatabaseEloquentModel; 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 AppRepositories; use PrettusRepositoryContractsRepositoryInterface; /** * Interface ShopRepository. * * @package namespace AppRepositories; */ interface WarehouseRepository extends RepositoryInterface { public function getIdsByCmpId($cmpId, $sel); public function getNameById($g_w_id, $sel); }
3.3、WarehouseRepositoryEloquent.php:
<?php namespace AppRepositories; use AppModelWarehouse; use IlluminateSupportFacadesDB; use PrettusRepositoryEloquentBaseRepository; /** * Class ShopRepositoryEloquent. * * @package namespace AppRepositories; */ 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(AppRepositoriesWarehouseRepository::class, AppRepositoriesWarehouseRepositoryEloquent::class);
五、services
5.1、文件及位置:
5.2、WarehouseService.php:
<?php namespace AppServices; 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 AppHttpControllersWarehouse; use AppRepositoriesWarehouseRepository; use AppServicesWarehouseService; use IlluminateHttpRequest; use AppHttpControllersController; 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上加载组件:
代码:
AppProvidersRepositoryServiceProvider::class,