Я изучаю шаблон шаблона репозитория в Laravel, и для этого я использую https://github.com/andersao/l5-repository .
Я думаю, что я устанавливаю успех в своем проекте. Но когда я запускаю код с репозиторием, у меня есть некоторые проблемы
SQLSTATE [42S02]: базовая таблица или представление не найдены: 1146 Таблица «test.nhanviens» не существует (SQL: select * from
nhanviens
)
Таблица в моей базе данных Nhanvien not Nhanviens
Здесь в моем коде
NhanvienRepository.php
<?php namespace App\Repositories; use Prettus\Repository\Contracts\RepositoryInterface; /** * Interface NhanvienRepository * @package namespace App\Repositories; */ interface NhanvienRepository extends RepositoryInterface { // }
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)); } }
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()); } }
из App \ Nhanvien.php Добавьте эту переменную в класс:
protected $table = 'nhanvien';
Объяснение: «Змей-случай», множественное имя класса будет использоваться как имя таблицы, если другое имя не указано явно. Таким образом, в этом случае Eloquent будет считать, что модель nhanvien хранит записи в таблице nhanviens.
Как указано в официальной документации Eloquent, вам нужно конкретно указать имя таблицы в определении модели. То есть в вашем файле App \ Nhanvien.php установлено следующее:
<?php namespace App; use Illuminate\Database\Eloquent\Model; class Nhanvien extends Model { /** * The table associated with the model. * * @var string */ protected $table = 'Nhanvien'; }
или использовать
protected $table = 'nhanvien';
вместо этого, если ваше имя таблицы заполнено в нижнем регистре.
В моем случае я избавился от подобной ошибки, выполнив команду
php artisan config:cache