Repository 层的代码你们有用来创建或更新数据吗,还是只用来创建数据

看了一下手册,借鉴了一下,结果后来把更新用户的乐观锁也给放在里面了,但是有一种说法,Repository用适合用来获取数据。
另外Service层和这个Repository有什么区别

<?php

namespace App\Repositories;

use Illuminate\Http\Request;
use App\Models\User;
use App\Exceptions\InvalidRequestException;

class UserRepository
{
    private $user;

    public function __construct(User $user)
    {
        $this->user = $user;
    }

    public function getActive($phone)
    {
        return $this->user->where('phone', $phone)->where('status', 1)->firstOrFail();
    }

    public function updateBalance(User $user, $balance) {
        $isUpdated = $this->user->where('id', $user->id)->where('version', $user->version)->update(['balance' => $balance, 'version' => $user->version + 1]);
        if(!$isUpdated) {
            throw new InvalidRequestException("充值失败");
        }
    }
}
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
讨论数量: 9

我从来不用这一层。

1年前 评论

Java里有这种写法

1年前 评论

controller 接收请求,转发给服务层做处理,等待服务层返回数据或抛出异常后将其返回

service 业务处理,接受控制器转发参数后对业务进行处理,数据验证(laravel自带),业务逻辑判断,数据处理(dao),所以这里这是各种 if 判断,取数据,组装数据

repository 数据查询,包括数据列表,业务逻辑数据查询,如果只是单纯的页面列表可以只用通过 controller 调用

dao 数据处理,很少人用,单条数据查询,数据增、改都通过它

model 只是数据表模型

1年前 评论

个人习惯,service用来放第三方服务了,不习惯用tool之类的,repository我用来处理复杂的模型逻辑了,controller做转发,

1年前 评论

目前的是 Repository 只用来查询,在考虑要不要把增删改拿过来,让 Service 层更加容易被测试。

Service 用于业务处理、写入数据库等,且一个 Service 原则上只做一件事,比如 登录、注册,分别创建 LoginService、RegisterService,而不是挤在一起用 UserService,这样后面 UserService 就会变的很大。这种情况下,如果跟 User 相关的太多,那就再创建一个 User 目录,把这些 Service 放进去,而不是揉到一起。

1年前 评论
深蓝色 (楼主) 1年前
<?php

namespace App\Services;

use Illuminate\Http\Request;
use App\Models\User;
use App\Exceptions\InvalidRequestException;

class UserService
{
    private $user;

    public function __construct(User $user)
    {
        $this->user = $user;
    }

    public function updateBalance(User $user, $balance) {
        $isUpdated = $this->user->where('id', $user->id)->where('version', $user->version)->update(['balance' => $balance, 'version' => $user->version + 1]);
        if(!$isUpdated) {
            throw new InvalidRequestException("充值失败");
        }
    }
}
1年前 评论

file 创建了一个Sms用来发送短信,引用的是easysms 之所以创建Sms目录是因为需要存储RegisterMessage,后面还会有找回密码啥的 然后SmsService这个是用来发送的,因为我配置文件需要从数据库中调用,放在config里面读不到 但感觉这样设计有点奇怪

1年前 评论

我基本是 controller model service exception validator 这几个 repository没用过

1年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!