个人在使用ThinkAdmin开发中遇到了这样一个问题:
在些复杂的业务逻辑中,使用Db查询数据表时须要使用很多的join查询;而且在不同的方法里也须要用到同样的join查询,所以写起来很是麻烦。个人比较懒,所以采使用的Tp内置Model类预定义关联查询来解决上述的问题。
唯一有麻烦的是ThinkAdmin的默认软删除字段是is_deleted, 而thinkphp的默认软删除字段是delete_time,所以又得在Model里自定义场景查询;但又感觉样的代码比较繁复,不够理想。
虽然作者不使用Model,但我想在使用ThinkAdmin的人中有很多人和我一样都喜爱Model用法。所以呼吁:
不求作者去兼容Model,但求ThinkAdmin数据操作规则能与thinkphp保持一致,这样对使用ThinkAdmin中喜爱Model用法开发者们更加的友好。
附议
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。
Model 的软删除是支持自定字段及默认值,ThinkLibrary 已经使用,不好再做调整
https://www.kancloud.cn/manual/thinkphp6_0/1037594
我是放弃了Model方法,其他地方也清一色用_page_filter 感觉比model方便?
@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变量就变成一个模型对象了,这时就可以大量的使用模型属性和方法了。
@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 这样出来的结果是不是在循环中查询了?
登录 后才可以发表评论