比较优雅的后台条件查询

后面list页面,很多时候,我们需要按时间,状态搜索想要的值,比如

file

代码如下:

控制器:

file

模型:

file

scope 可以这样灵活运用。

本作品采用《CC 协议》,转载必须注明作者和本文链接
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 16
       if (!empty($map['user_name'])) {
            $map['user_name'] = ['LIKE' => '%' . $map['user_name'] . '%'];
        }

        if (!empty($map['mobile'])) {
            $map['mobile'] = ['LIKE' => '%' . $map['mobile'] . '%'];
        }

        if (!empty($map['email'])) {
            $map['email'] = ['LIKE' => '%' . $map['email'] . '%'];
        }

        if ($map['role_id'] <= 0) {
            unset($map['role_id']);
        }

        return static::query()->multiwhere($map)->get();

这样呢?

7年前 评论

有更简单的。我不喜欢写if ,喜欢写when

7年前 评论
leo

@dope2008 如果 php 也有箭头函数我可能会喜欢用 when

7年前 评论

@leo laravel有

User::when($role, function ($query) use ($role) {
                    return $query->where('role_id', $role);
})->get()
7年前 评论

我觉得我们这个方法更优雅

//Controller

file

// Magic

file

7年前 评论
leo

@dope2008 你可能不知道什么是箭头函数

7年前 评论
nff93

@dope2008 @leo 说的是箭头函数:

let user = userModel.when(query.id, builder => builder.where('id', query.id).first()
7年前 评论

@nff93 箭头函数就是lambda表达式吧?

7年前 评论
leo

@kubill 并不是,对 js 来说使用箭头函数可以不那么关心 this 指向谁的问题

对 php 来说,我只是不想打 function 这么几个字母

7年前 评论

@hiword 这是什么原理?有什么教程吗

7年前 评论

@hiword 我也想知道 :cat:

7年前 评论

@hiword 有点深度,等下班回去慢慢看看,感谢 :+1:

希望大佬有空的话能够开贴细说

7年前 评论

@tonyski 可以一起研究,有不好的地方还请指证

这个原来是打算基于Laravel的模式,搭建一个兼容Laravel Yii等主流框架的仓库集,不过暂时只有Laravel

7年前 评论

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