492 Star 2.7K Fork 959

GVPAnyon / ThinkAdmin

 / 详情

对数据操作及软删除的建议

已关闭
创建于  
2020-03-12 09:54

个人在使用ThinkAdmin开发中遇到了这样一个问题:
在些复杂的业务逻辑中,使用Db查询数据表时须要使用很多的join查询;而且在不同的方法里也须要用到同样的join查询,所以写起来很是麻烦。个人比较懒,所以采使用的Tp内置Model类预定义关联查询来解决上述的问题。
唯一有麻烦的是ThinkAdmin的默认软删除字段是is_deleted, 而thinkphp的默认软删除字段是delete_time,所以又得在Model里自定义场景查询;但又感觉样的代码比较繁复,不够理想。
虽然作者不使用Model,但我想在使用ThinkAdmin的人中有很多人和我一样都喜爱Model用法。所以呼吁:
不求作者去兼容Model,但求ThinkAdmin数据操作规则能与thinkphp保持一致,这样对使用ThinkAdmin中喜爱Model用法开发者们更加的友好。

评论 (7)

隔壁老李 创建了任务
隔壁老李 关联仓库设置为Anyon/ThinkAdmin
展开全部操作日志

Model 的软删除是支持自定字段及默认值,ThinkLibrary 已经使用,不好再做调整
https://www.kancloud.cn/manual/thinkphp6_0/1037594

我是放弃了Model方法,其他地方也清一色用_page_filter 感觉比model方便? :sweat_smile:

@Atlaxy 后台管理大多数情况确实不需要用到model,但对于订单这类关联较多的表应当用model;使用方式可以和 _page_filter 这些过滤回调结合,可以看看我的代码:

  public function index()
    {
        return $this->_query($this->table)
            ->equal('cate_id,member_id')
            ->like('title')
            ->whereNotIn('status', [CARD_STATUS_SK])
            ->page();
    }

    protected function _page_filter(&$data)
    {
        foreach ($data as &$vo) {
            $vo = new MemberCardModel($vo);
        }
    }

这样在tamplate中,$vo变量就变成一个模型对象了,这时就可以大量的使用模型属性和方法了。

@mi8-git
我的订单类的生成基本都是在接口端,后段需要的操作并不是很多,展示数据基本都是在foreach里重新赋值。

@Atlaxy 后台管理大多数情况确实不需要用到model,但对于订单这类关联较多的表应当用model;使用方式可以和 _page_filter 这些过滤回调结合,可以看看我的代码:

public function index()
{
return $this->_query($this->table)
->equal('cate_id,member_id')
->like('title')
->whereNotIn('status', [CARD_STATUS_SK])
->page();
}
protected function _page_filter(&$data)
{
foreach ($data as &$vo) {
$vo = new MemberCardModel($vo);
}
}

这样在tamplate中,$vo变量就变成一个模型对象了,这时就可以大量的使用模型属性和方法了。

@mi8-git 这样出来的结果是不是在循环中查询了?

@mi8-git 这样出来的结果是不是在循环中查询了?

@杨永安 直接new Model并传入参数这种方式不参与数据查询,只有去访问到不存在的属性时才会去查询,这TP是内置的懒加载;

Anyon 任务状态待办的 修改为已拒绝

登录 后才可以发表评论

状态
负责人
里程碑
Pull Requests
关联的 Pull Requests 被合并后可能会关闭此 issue
分支
开始日期   -   截止日期
-
置顶选项
优先级
参与者(4)
437240 yangyongan 1578923842 126695 zoujingli 1578918740 329472 empiror 1602816039 696866 fastknife 1626426510
PHP
1
https://gitee.com/zoujingli/ThinkAdmin.git
git@gitee.com:zoujingli/ThinkAdmin.git
zoujingli
ThinkAdmin
ThinkAdmin

搜索帮助