极度的自律才能有开挂的人生
最近发表的评论
  • Sass_BINARY_SITE=http://npm.taobao.org/mirrors/node-Sass yarn 报错,试过问答里面的解决办法 at 1个月前

    请执行yarn config delete registry; 再去执行别的。

  • 为何要在 .gitignore 文件中把 public/JS 和 public/CSS 目录排除掉 at 1个月前

    @jltxwesley 一般不是都在线上编译么,所以不需要把编译好的提交上去。

  • [东京][20K-30K] 【热门】日本最大的教育 SAAS 系统-招聘 PHP 工程师 持续招人 at 1个月前

    支持一下。!!!

  • chunk 和 chunkById 功能上有区别吗? at 2个月前

    自问自答: 实现chunkById() 需求处理大表带条件更新操作。 基于laravel5.1 的command

    <?php
    
    namespace App\Console\Commands;
    
    use Illuminate\Console\Command;
    use DB;
    use App\Model\Comment;
    class CompletionCommentTitle extends Command
    {
        /**
         * The name and signature of the console command.
         *
         * @var string
         */
        protected $signature =' title:completion_comment_title';
    
        /**
         * The console command description.
         *
         * @var string
         */
        protected $description = '根据指定条件补全评论title';
    
        const CHUNK_SIZE = 150;
        /**
         * Create a new command instance.
         *
         * @return void
         */
        public function __construct()
        {
            parent::__construct();
        }
    
        /**
         * Execute the console command.
         *
         * @return mixed
         */
        public function handle()
        {
            try{
                 $this->info('开始处理...');
                 $this->chunkById(self::CHUNK_SIZE,function ($comments){
                     $this->info(sprintf('正在补全 ID 范围为 %s 至 %s 的评论title',$comments->first()->id, $comments->last()->id));
                     foreach($comments as $comment){
                         $comment->where('id',$comment->id)->update(['title'=> $this->perpareTitle()]);
                     }
                 });
                $this->info('处理结束...');
            }catch(\Exception $e){
                $this->error($e->getMessage() . ',Line:' . $e->getLine());
            }
        }
    
        /**
         * 需要补全的理出数据
         * @return mixed
         * @throws \Exception
         */
        protected function perpareTitle(){
    
            $title_arr = [
                'Very flattering',
                'Super cute!',
                 'Very nice',
                'Very good',
                'Satisfying',
                'Nice looking',
                'I love it',
                'Fit perfectly',
                'So comfy',
                'Nice',
                'Perfect!',
                'Look very pretty!',
                'Fit very well',
                'Look good',
                'Fantastic',
                'Comfortable',
                'Thanks',
                'Nice material',
                'Good fit',
                'It\'s cute',
                'Good looking',
                'Speedy delivery',
                'So nice and pretty',
                'Well received!',
                'Great quality',
                'Great purchase!',
                'so well made',
                'Very fashionable',
                'Beautiful',
                'High quality',
                'Highly recommend',
                'nice looking',
                'True size',
                'Adorable',
                'Awesome.',
                'nicely made',
                'Feel good on',
                'Excellent',
                'Super comfy!',
                'Fit as expected'
            ];
    
            $random =  random_int(0,39);
            return $title_arr[$random];
        }
    
        /**
         * ID分块处理核心代码
         * @param $count
         * @param callable $callback
         * @param string $column
         * @return bool
         */
        protected function chunkById($count, callable $callback, $column = 'id'){
            $lastId = 0;
            do {
                $results = $this->forPageAfterId($count, $lastId, $column)->get();
                $countResults = $results->count();
                if ($countResults == 0){
                    break;
                }
                if ($callback($results) === false) {
                    return false;
                }
                $lastId = $results->last()->{$column};
                unset($results);
            } while ($countResults == $count);
    
            return true;
        }
    
        protected function forPageAfterId($perPage = 15, $lastId = 0, $column = 'id')
        {
            return Comment::query()
                ->where('title','')
                ->where('customer_id',0)
                ->where($column, '>', $lastId)
                ->orderBy($column, 'asc')
                ->take($perPage);
        }
    }
    
  • chunk 和 chunkById 功能上有区别吗? at 2个月前

    @leo :joy:想想也是,研究研究~~~

  • chunk 和 chunkById 功能上有区别吗? at 2个月前

    @leo 因为公司现有的项目中用的是laravel5.1,这个版本里面还没有chunkById,那么我想处理大表 带条件的更新操作时chunk会丢数据,我应该怎么实现呢,leo哥能否给个思路。~

  • strip_tags 函数 引起 商品描述 description 的 img 标签也被删除 at 4个月前

    @leo 商品详情页也在ES里面取,减轻数据库的压力,所以要用到的都放在ES里。。(我是这样想的)ES 能担任这个角色不~

  • chunk 和 chunkById 功能上有区别吗? at 4个月前

    @leo 好吧,有点懒了,昨天。:smile:

  • 分期付款中用户不在支付除第一次剩余款项问题 at 4个月前

    @leo I get it....

  • ngrok 设置 http 转发链接 映射到 localhost:80 失败 at 4个月前

    @leo 我找到问题了leo哥,哈哈。 homestead 上的 hosts 文件里面没有 127.0.0.1 localhost (我的被自己删除了)导致的这个错误页面

  • 关于 Laravel-admin at 4个月前

    @leo 。。。。 老哥,稳!

  • 关于 Laravel-admin at 4个月前

    @leo 如果商业项目比较复杂,leo哥有好的项目推荐吗?是不是自己根据业务场景自己组装会更实际一点呢,或者说有没有好的易于自己扩展的项目。

  • Laravel 的集合写法 at 4个月前

    @Flourishing 怎么定位到这个文件的Illuminate/Pagination/AbstractPaginator.php 我只能用全局搜索定位这个方法。

  • 所以这个 register 到底是用来干嘛的? at 4个月前

    @yangwb1 如果你的切入点是想学习框架核心,我的回答是不会

  • 请问 DingoApi 的 Transformer 怎么返回自定义状态码?比如我要在 Transformer 中添加一个 status_code at 5个月前

    @xulei 没有理解上去你说的话。 本人是 不推荐往transform 里面放状态码的,因为 transform 只是用来显示和转换数据的,状态码已经在http中有了,不必多此一举。

  • 绝不 使用 Repository?? at 5个月前

    小型项目确实不需要Repository,因为商业逻辑并不是那么复杂,但是大中型项目就需要使用Repository了,有些人可能不太清楚Repository中应该放那些代码,Repository中注入Model(当成Eloquent class),Repository其中方法处理复杂的查询条件拼接,聚合和排序等。大中型项目的层次应该是 Model 注入到Repository ,Repository 注入到 Service(负责商业逻辑) , Service 注入到Controller。 一切的一切都是为了不违反SOLID原则!

  • 所以这个 register 到底是用来干嘛的? at 5个月前

    @kiyoma 说实话,这个文档确实对新手不友好,作为新手的我也是看着一脸懵逼,我建议你去看一本书《Laravel框架技术解析》--陈昊 ,然后耐心的去跟着节奏去分析源码,也许你就明白了。(我目前正在看这本书,虽然是基于5.1的,但是核心内容没有变)

  • 对于中间件 bindings,api.throttle,api.auth 的困惑 at 5个月前

    @liyu001989 明白了,谢谢李哥

  • 对于中间件 bindings,api.throttle,api.auth 的困惑 at 5个月前

    @liyu001989 'middleware' => 'bindings' ,'middleware' => 'api.throttle','middleware' => 'api.auth',这三个都不是用的kernel中的中间件?bindings应该是用到了 kernel中 中间件了吧?api.throttle'和api.auth这两个中间件又是从什么地方定义的呢?

  • 请问 DingoApi 的 Transformer 怎么返回自定义状态码?比如我要在 Transformer 中添加一个 status_code at 5个月前

    很简单

    <?php
    
    namespace App\Transformers;
    
    use App\Models\User;
    use League\Fractal\TransformerAbstract;
    
    class UserTransformer extends TransformerAbstract
    {
        public $status;
    
        public function __construct($code)
        {
            $this->status = $code;
        }
    
        public function transform(User $user)
        {
            return [
                'id' => $user->id,
                'name' => $user->name,
                'email' => $user->email,
                'avatar' => $user->avatar,
                'introduction' => $user->introduction,
                'bound_phone' => $user->phone ? true : false,
                'bound_wechat' => ($user->weixin_unionid || $user->weixin_openid) ? true : false,
                'last_actived_at' => $user->last_actived_at->toDateTimeString(),
                'created_at' => $user->created_at->toDateTimeString(),
                'updated_at' => $user->updated_at->toDateTimeString(),
                'status_code' => $this->status
            ];
        }
    }

    在方法中调用的时候

     return $this->response->item($this->user(),new UserTransformer(201));

    输出

    {
        "data": {
            "id": 1,
            "name": "Summer",
            "email": "summer@yousails.com",
            "avatar": "https://fsdhubcdn.phphub.org/uploads/images/201710/14/1/ZqM7iaP4CR.png?imageView2/1/w/200/h/200",
            "introduction": "Mollitia earum vel possimus accusantium nesciunt error ut.",
            "bound_phone": false,
            "bound_wechat": false,
            "last_actived_at": "2018-11-27 14:22:22",
            "created_at": "2018-11-27 14:22:22",
            "updated_at": "2018-11-27 14:22:22",
            "status_code": 201
        }
    }