jon*_*nny 4 php repository laravel laravel-5
我正在研究Laravel中的存储库设计模式,并且正在使用https://github.com/andersao/l5-repository做到这一点。
我认为我在项目中取得了成功。但是当我使用存储库运行代码时,我遇到了一些问题
SQLSTATE [42S02]:找不到基本表或视图:1146表'test.nhanviens'不存在(SQL:select * from
nhanviens)
我数据库中的表是Nhanvien而不是Nhanviens
在我的代码中
NhanvienRepository.php
<?php
namespace App\Repositories;
use Prettus\Repository\Contracts\RepositoryInterface;
/**
* Interface NhanvienRepository
* @package namespace App\Repositories;
*/
interface NhanvienRepository extends RepositoryInterface
{
//
}
Run Code Online (Sandbox Code Playgroud)
NhanvienRepositoryEloquent.php
<?php
namespace App\Repositories;
use Prettus\Repository\Eloquent\BaseRepository;
use Prettus\Repository\Criteria\RequestCriteria;
use App\Repositories\NhanvienRepository;
use App\Entities\Nhanvien;
use App\Validators\NhanvienValidator;
/**
* Class NhanvienRepositoryEloquent
* @package namespace App\Repositories;
*/
class NhanvienRepositoryEloquent extends BaseRepository implements NhanvienRepository
{
/**
* Specify Model class name
*
* @return string
*/
public function model()
{
return Nhanvien::class;
}
/**
* Boot up the repository, pushing criteria
*/
public function boot()
{
$this->pushCriteria(app(RequestCriteria::class));
}
}
Run Code Online (Sandbox Code Playgroud)
DataController.php
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests;
use App\nhanvien;
use App\Repositories\NhanvienRepository;
class DataController extends Controller
{
protected $repository;
public function __construct(NhanvienRepository $repository){
$this->repository = $repository;
}
public function DanhSach(){
var_dump($this->repository->all());
}
}
Run Code Online (Sandbox Code Playgroud)
从App \ Nhanvien.php将此变量添加到类中:
protected $table = 'nhanvien';
Run Code Online (Sandbox Code Playgroud)
说明:除非明确指定其他名称,否则将使用“蛇形”类的类的复数名称作为表名称。因此,在这种情况下,Eloquent将假设nhanvien模型将记录存储在nhanviens表中。