发表过的专栏文章
最近发表的话题
最近发表的评论
  • 求问这个漂亮的图片是用啥工具做的? at 1周前

    file

    OmniGraffle 做的,跟人感觉OmniGraffle比Visio好用

  • 给 Eloquent 的 whereHas 加个 where in 的优化 at 1周前

    虽然知道有这个性能问题,但是一直没有去改造……感谢分享! :stuck_out_tongue_winking_eye: :+1:

  • 遇到 MySQL 8.0.11 的一些坑 at 1周前

    @sunny-w Laravel 什么版本?

  • 多字段登录通用解决方案 at 3周前

    @waynet 嗯,这倒是,当时水平有限,考虑不到数据库索引问题!不过大项目肯定会吧认证模块做成微服务,有专门的架构肯定不会这样去做……

  • 「新轮子」一个基础身份证信息提取和验证组件,采集用户实名制信息更简单 at 3周前

    乍一看,还以为输入身份号可以查看所有信息呢,白激动了一把 :joy:
    支持一下 :+1:

  • Laravel 广播系统例子 at 1个月前

    :+1:

  • Laravel 程序架构设计思路:使用动作类 at 1个月前

    是事件进行解耦是不是更好一些,如果数据不是要求强一致性的话

  • 无限极分类 at 1个月前
  • Laravel5.5+passport 放弃 dingo 开发 API 实战,让 API 开发更省心 at 1个月前

    根据这篇文章,自定义了一个HelperFunction

    <?php
    
    use Symfony\Component\HttpFoundation\Response;
    use Illuminate\Pagination\LengthAwarePaginator;
    
    if (! function_exists('stored')) {
        /**
         * 创建资源成功后响应
         *
         * Date: 21/03/2018
         * @author George
         * @param $data
         * @param string $message
         * @return \Illuminate\Http\JsonResponse
         */
        function stored($data, $message = '创建成功') {
            return respond($data, $message);
        }
    }
    
    if (! function_exists('updated')) {
        /**
         * 更新资源成功后响应
         *
         * Date: 21/03/2018
         * @author George
         * @param $data
         * @param string $message
         * @return \Illuminate\Http\JsonResponse
         */
        function updated($data, $message = '更新成功') {
            return respond($data, $message);
        }
    }
    
    if (! function_exists('deleted')) {
        /**
         * 删除资源成功后响应
         *
         * Date: 21/03/2018
         * @author George
         * @param string $message
         * @return \Illuminate\Http\JsonResponse
         */
        function deleted($message = '删除成功') {
            return message($message, Response::HTTP_OK);
        }
    }
    
    if (! function_exists('accepted')) {
        /**
         * 请求已被放入任务队列响应
         *
         * Date: 21/03/2018
         * @author George
         * @param string $message
         * @return \Illuminate\Http\JsonResponse
         */
        function accepted($message = '请求已接受,等待处理') {
            return message($message, Response::HTTP_ACCEPTED);
        }
    }
    
    if (! function_exists('notFound')) {
        /**
         * 未找到资源响应
         *
         * Date: 21/03/2018
         * @author George
         * @param string $message
         * @return \Illuminate\Http\JsonResponse
         */
        function notFound($message = '您访问的资源不存在') {
            return message($message, Response::HTTP_NOT_FOUND);
        }
    }
    
    if (! function_exists('internalError')) {
        /**
         * 服务器端位置错误响应
         *
         * Date: 21/03/2018
         * @author George
         * @param $message
         * @param int $code
         * @return \Illuminate\Http\JsonResponse
         */
        function internalError($message = '未知错误导致请求失败', $code = Response::HTTP_INTERNAL_SERVER_ERROR) {
            return message($message, $code);
        }
    }
    
    if (! function_exists('failed')) {
        /**
         * 错误的请求响应
         *
         * Date: 21/03/2018
         * @author George
         * @param $message
         * @param int $code
         * @return \Illuminate\Http\JsonResponse
         */
        function failed($message, $code = Response::HTTP_BAD_REQUEST) {
            return message($message, $code);
        }
    }
    
    if (! function_exists('success')) {
        /**
         * 成功响应
         *
         * Date: 21/03/2018
         * @author George
         * @param $date
         * @return \Illuminate\Http\JsonResponse
         */
        function success($date) {
            return respond($date);
        }
    }
    
    if (! function_exists('message')) {
        /**
         * 消息响应
         *
         * Date: 21/03/2018
         * @author George
         * @param $message
         * @param int $code
         * @return \Illuminate\Http\JsonResponse
         */
        function message($message, $code = Response::HTTP_OK) {
            return respond([], $message, $code);
        }
    }
    
    if (! function_exists('respond')) {
        /**
         * 生成响应体
         *
         * Date: 21/03/2018
         * @author George
         * @param array $data
         * @param string $message
         * @param int $code
         * @param array $header
         * @return \Illuminate\Http\JsonResponse
         */
        function respond($data = [], $message = '请求成功', $code = Response::HTTP_OK, array $header = []) {
            if ($data instanceof LengthAwarePaginator) {
                return response()->json([
                    'resultCode' => $code,
                    'resultMessage' => $message,
                    'data' => $data->items(),
                    'current_page' => $data->currentPage(),
                    'from' => $data->firstItem(),
                    'per_page' => $data->perPage(),
                    'to' => $data->lastItem(),
                    'total' => $data->total(),
                ], $code, $header);
            }
            return response()->json([
                'resultCode' => $code,
                'resultMessage' => $message,
                'data' => $data ? $data : []
            ], $code, $header);
        }
    }
    

    在控制器里:

    public function index()
    {
        $companies = Company::query()->paginate(15);
        return success($companies);
    }
  • MySQL 主从复制 实例讲解 at 2个月前

    学习了 :+1:

  • deployer 实战经验分享 at 2个月前

    配合Git 的hooks 可以很好的实现自动化

  • 利用 Composer 的本地加载功能来优化你的扩展包开发工作流 at 2个月前

    这样就简单多了,请问封面图,用什么做的? :blush:

  • JWT 完整使用详解 at 2个月前

    确实,之前也是踩了不少坑,但是一直没时间分享,给你打Call

  • 高性能千万级定时任务管理服务 forsun Laravel 插件使用详解 at 2个月前

    感谢分享,收藏一下,后面要用到 :+1:

  • 关于 MySQL8 的一点小问题? at 2个月前

    MySQL 5.7: Using GRANT to create users. Instead, use CREATE USER. Following this practice makes the NO_AUTO_CREATE_USER SQL mode immaterial for GRANT statements, so it too is deprecated.
    MySQL 8.0.11: Using GRANT to create users. Instead, use CREATE USER. Following this practice makes the NO_AUTO_CREATE_USER SQL mode immaterial for GRANT statements, so it too is removed.

    如你所料,8.0.11中 删除了这个模式!

  • 哈喽,文档系统已升级完成,已为接下来的文档翻译工作做好准备 at 4个月前

    文档索引比以前好用多了, 不过感觉UI风格还是以前的好看

  • Symfony 4.1 路由将提速 5 倍 at 5个月前

    4.1还得一段时间,想想也激动

  • 今天又发 Package 了~图片上画文字利器 at 6个月前

    赞?

  • 他山之石 使用二级缓存提高缓存命中率和内存使用效率 at 6个月前

    正好用到,非常棒

  • [开源项目] 基于 Laravel5.5 与 VUE2 前后端分离的兼职平台,顺带求职 at 6个月前

    UI很不错,一个人坐成这样已经很棒了!加油