inquiloper / laravel-baserepository
一个基础仓库,封装了一些 Laravel Eloquent 的功能,以便您可以在自己的仓库中共享。
This package is not auto-updated.
Last update: 2024-09-29 05:08:25 UTC
README
Laravel 基础仓库
描述
围绕 Eloquent 主要功能的包装器,以便您可以在自己的仓库之间共享。
安装
为了安装此包,您只需在控制台中执行以下行 composer require inquiloper/laravel-baserepository
然后在您的仓库中
use Inquiloper\BaseRepository; use App\User; class UsersRepository extends from BaseRepository implements UsersRepositoryInterface { public function __construct(User $user){ parent::__construct($user); } }
这就完成了,现在您可以开始使用了!
文档
假设您在控制器中有一个函数,其中您对 repo 进行类型提示
public function users(UsersRepositoryInterface $usersRepo){}
现在,您可用的方法有
查找模型的所有元素
$usersRepo->findAll()
通过 $field 查找单个元素
$usersRepo->findOneBy(Array $fields)
通过 $fields 查找所有元素
$usersRepo->findAllBy(Array $fields)
创建并保存到数据库
$usersRepo->create(Array $data)
通过 $fields 和 $data 更新
$usersRepo->updateBy(Array $fields, Array $data) public function with($relationships);
通过 $fields 和 $data 更新
$usersRepo->updateBy(Array $fields, Array $data)
通过 $fields 删除
$usersRepo->deleteBy(Array $fields)
预加载关系
$usersRepo->with(['posts', 'comments'])->findOneBy(['id' => 1])
动态方法
您可以使用动态名称调用 findOneBy 方法,如下所示
$usersRepo->findOneByName('John Doe')
这将转换为 select * from users where name = 'John Doe' limit 1
动态调用将自动将 findOneBy 之后的内容转换为 snake_case,因此 Name 转换为 name,UserEmail 转换为 user_email 等等。您可以关闭此功能,方法将使用文字名称添加 where 子句
$usersRepo->findOneByWpEmail('email@example.com' , false)
这将转换为 select * from users where WpEmail = 'email@example.com' limit 1