inquiloper/laravel-baserepository

一个基础仓库,封装了一些 Laravel Eloquent 的功能,以便您可以在自己的仓库中共享。

1.0.2 2018-07-31 22:26 UTC

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