l5-repository基本使用--结合使用artisan
一、从头开始创建
1、执行以下artisan:
php artisan make:entity Student
如果某个文件已经存在,则不会创建新的文件去覆盖原有的文件,案例如下:
2、修改model:Student.php
protected $table = 'student'; protected $primaryKey = 'id'; public $timestamps = false; protected $fillable = [];
3、StudentRepository.php增加方法:
public function getInfoById($id, $sel);
4、StudentRepositoryEloquent.php添加方法:
use Illuminate\Support\Facades\DB;
public function getInfoById($id, $sel) { return $this->model ->select(DB::raw(implode(',', $sel))) ->where('id', $id) ->first(); }
5、新增StudentService.php
<?php namespace App\Services; class StudentService { private $studentRepository; public function __construct($studentRepository) { $this->studentRepository = $studentRepository; } public function getInfoById($id) { return $this->studentRepository->getInfoById($id, ['name', 'age']); } }
6、修改控制器:StudentsController.php
<?php namespace App\Http\Controllers; use App\Repositories\StudentRepository; use App\Services\StudentService; /** * Class StudentsController. * * @package namespace App\Http\Controllers; */ class StudentsController extends Controller { private $studentService; /** * StudentsController constructor. * * @param StudentRepository $repository * @param StudentValidator $validator */ public function __construct(StudentRepository $studentRepository) { $this->studentService = new StudentService($studentRepository); } public function test() { $data = $this->studentService->getInfoById(1); dd($data); } }
7、然后添加必要的路由,即可获得数据
Route::get('/student/test', 'StudentsController@test');
8、注册RepositoryServiceProvider: