{{wikiTitle}}
Services层详解
目录:
services层属于dao层之下,最接近控制器层的。所有的业务逻辑都可以写在services层中。在析构函数中,注入对应的dao层来操作数据库。
services内置方法
获取当前分页页码和展示条数,会根据系统配置返回不大于配置的展示条数
public function getPageValue(bool $isPage = true, bool $isRelieve = true)
数据库事务操作
public function transaction(callable $closure, bool $isTran = true)
创建token
public function createToken(int $id, $type)
获取路由地址
public function url(string $path, array $params = [], bool $suffix = false, bool $isDomain = false)
密码hash加密
public function passwordHash(string $password)
创建一个UserServices
,引入刚才上一章创建的UserDao
namespase app\services;
user app\services\BaseServices;
use app\dao\UserDao;
class UserServices extends BaseServices
{
public function __construct(UserDao $dao)
{
$this->dao = $dao;
}
}
引入后,就可以在UserServices中写自己的逻辑
ServicesTrait
继承方法
ServicesTrait
主要用来辅助IDE来,提示函数操作,在其他地方实例化services可以直接调用到dao层的方法。
namespase app\services;
user app\services\BaseServices;
use app\dao\UserDao;
use crmeb\traits\ServicesTrait;
class UserServices extends BaseServices
{
use ServicesTrait;
public function __construct(UserDao $dao)
{
$this->dao = $dao;
}
}
查询用户uid=1的用户
get
方法属于dao
层中基类中的
use app\services\UserServices;
/** @var UserServices $service */
$service = app()->make(UserServices::class);
$res = $service->get(1);
var_dump($res->toArray());
使用了UserServices不知道当前的service操作的是哪个模型
UserServices
前面的user就是相关的模型信息
起service类名的时候一定要和相关的模型名称保持一致,这样才能一眼就能看出操作的数据库是哪一个。
{{cateWiki.like_num}}人点赞
0人点赞
评论({{cateWiki.comment_num}})
{{commentWhere.order ? '评论从旧到新':'评论从新到旧'}}
{{cateWiki.page_view_num}}人看过该文档
评论(0)
{{commentWhere.order ? '评论从旧到新':'评论从新到旧'}}
131人看过该文档
{{item.user ? item.user.nickname : ''}} (自评)
{{item.content}}
{{item.create_time}} 删除
{{item.like ? item.like.like_num : 0}}
{{replyIndex == index ? '取消回复' : '回复'}}
搜索结果
为您找到{{wikiCount}}条结果
位置:{{path.name}} {{(i+1) == item.catalogue.path_data.length ? '':'/'}}
{{item.page_view_num}}
{{item.like ? item.like.like_num : 0}}
{{item.comment ? item.comment.comment_num : 0}}