coodeer

黄毅
第 4447 位会员
注册于 2016-05-18 23:22:52
活跃于 2017-09-23 21:27:25


PHPer
专栏文章
没有任何数据~~
最近话题
最新评论
  • Rbac-Laravel 拓展包,轻松搞定权限控制! at 2017-09-22 17:25:09

    @饭吃了饿 会的,用相应的Manager来处理就好。

  • Rbac-Laravel 拓展包,轻松搞定权限控制! at 2017-09-20 14:54:59

    @饭吃了饿
    根据你提供的Exception信息,可以断定是系统未找到aragorn这个名字的数据库连接。
    但是你配置的连接名是pgsql,所以请检查一下代码里面,是否哪个地方将数据库连接配置成了aragorn,然后修改为pgsql即可。
    用grep或者IDE的Find in path搜索一下aragorn便知。

  • 请问 DB facade 到底能不能实现 Eloquent ORM 的数据库事物操作? at 2017-09-19 17:58:05

    我觉得这是中文用词理解有歧义的锅:joy:

    英文原版是这样的:

    Using the DB facade's transaction methods also controls transactions for the query builder and Eloquent ORM.

    译者的“适用于”并不是指Eloquent ORM用有transaction方法。

    生硬一点的翻译就是:使用DB facade的transaction方法也能为查询构造器和Eloquent ORM提供事务控制。

  • Redis::connection () 之后再 config::set () 配置 Redis 就没有作用了? at 2017-09-13 14:19:12

    @英雄没有斗篷
    5.3及以前的版本换成Illuminate\Redis\Database应该就好了:

    use Illuminate\Redis\Database;
    use Illuminate\Support\Arr;
    use Illuminate\Support\Facades\Facade;
    
    app()->singleton('redis', function ($app) {
        return new Database($app['config']['database.redis']);
    });
    
    Facade::clearResolvedInstance('redis');
  • Redis::connection () 之后再 config::set () 配置 Redis 就没有作用了? at 2017-09-13 11:01:06

    提供一条参考思路:修改配置后,重新绑定一次redis单例,然后清除Facade实例即可。

    use Illuminate\Redis\RedisManager;
    use Illuminate\Support\Arr;
    use Illuminate\Support\Facades\Facade;
    
    app()->singleton('redis', function ($app) {
        $config = $app->make('config')->get('database.redis');
    
        return new RedisManager(Arr::pull($config, 'client', 'predis'), $config);
    });
    
    Facade::clearResolvedInstance('redis');

    (或许还有更好的方法)

  • Redis::connection () 之后再 config::set () 配置 Redis 就没有作用了? at 2017-09-12 18:10:27

    理解这个问题之前需楼主去补一波ServiceProvider的知识点了 :)

    问题的关键在于Illuminate\Redis\RedisServiceProvider

    Laravel在启动RedisServiceProvider时,会将redis作为一个单例注册在应用容器中,而生成单例的那一刻,redis的所有配置已经作为一份拷贝定格在RedisManager之中了,所以你后面动态填加的redis2配置是没有效果的。(追踪源码一切就真相大白了^_^)

    那么你可能还会问,为什么我的redis1也是动态填加却效果呢?这是因为RedisServiceProvider这个服务是一个延迟加载的服务(仔细观察他的$defer属性是true),延迟加载的意义就在于第一次使用时才去加载服务。在你的代码里redis1配置是在第一次调用服务(26行)之前配置的,此时redis单例还未生成,所以这个配置是有效的。

    希望能帮到你。

  • Rbac-Laravel 拓展包,轻松搞定权限控制! at 2017-08-31 10:17:29

    @Littlesqx 以支持!

  • Laravel 5.5 LTS 正式发布!(包含新功能说明) at 2017-08-31 09:42:36

    喜大普奔

  • 请教一下,Laravel 使用 Ajax 提交数据时 validate 验证返回 422 响应这个有什么好的处理方法吗? at 2017-07-20 10:04:09

    如果你使用了Illuminate\Foundation\Http\FormRequest,验证失败就会自己返回422。

    或者可以:

    <?php
    use Illuminate\Support\Facades\Response;
    use Illuminate\Validation\ValidationException;
    
    if (! $validator->passes()) {
        $errors = $validator->getMessageBag()->toArray();
        $response = Response::json($errors, 422);
    
        throw new ValidationException($validator, $response);
    }
  • PHP 对二维数组指定的 key 排序 at 2017-07-08 09:03:09

    usort

  • 为什么我不太想用 Laravel ? at 2017-06-29 14:48:00

    楼主描述的痛点并不是痛点嘛,至少不是我的痛点。而Laravel本身却是基于PHP的生态痛点出发的。
    感觉让楼主放弃Laravel的锅最终甩给了IDE,或许是楼主太追求完美了:sweat_smile:

    说说槽点。

    1. 你能这样使用Eloquent,说明Laravel已经解决能你这个痛点了
    2. Facade本身是一种设计模式,其目的就是为了隐藏模块的复杂性,如果不想反直觉而一眼看透,你可以选择绕过Facade
    3. 路由这种东西,你习惯了symfony就好,用自己习惯太吐槽别人的习惯,有点讲牵强,毕竟萝卜白菜,各有所爱,就像有人喜欢symfony的风格,所以实现了annotations
    4. 语义化本是Laravel一大亮点,在楼主这却成了痛点,这点我不服:joy:
    5. 最后楼主说,以上问题本质上不是什么大问题,所以这篇文章的本质是给楼主赞人气的吧:)
  • migration 文件提示:Method 'create' not found in Illuminate\Support\Facades\Schema 怎么解决? at 2017-05-02 10:11:11

    你截图的仅是IDE的提示,不能表示是PHP的错误。至于为什么IDE会提示create方法找不到,需要你先弄明白Facade这种设计模式(自行在社区搜索一下)。不过也可以借助laravel-ide-helper这类开源组件让你的IDE有正常的提示。如果不能正常运行你的迁移命令,建议检查一下laravel日志来定位你的错误。

  • 给 Homestead 的文件类型设置为 nfs 产生的问题? at 2017-03-16 10:27:40

    最近刚好在Windows下踩过这个坑,希望能够帮到你。

    这是Vagrant1.9.2的一个关于转换windows UNC path的Bug,修复方式如下:

    1. 找到文件D:\HashiCorp\Vagrant\embedded\gems\gems\vagrant-1.9.2\lib\vagrant\util\platform.rb,注意替换D:\HashiCorp为你自己的安装地址,然后用编辑器打开。

    2. 找到第206行,并将其替换为下面这行代码(建议用#注释,便于复原)
    path.gsub("/", "\\")

    完成以上,你就可以再次尝试vagrant up,看看是否生效,但愿能解决你的问题。关于这个Bug的详情,在Github上有详细讨论,可以去这里阅读:https://github.com/mitchellh/vagrant/issues/8352

  • Laravel where 写法 at 2017-01-26 18:57:17

    @小丑路人 就是这个意思,whereRaw可以添加一个原生where字句。

    可以看看官方API的说明。

    https://laravel.com/api/5.3/Illuminate/Database/Query/Builder.html#method_whereRaw

  • Laravel where 写法 at 2017-01-26 18:22:36

    Myrootid后面我不小心多敲了一个空格,去掉应该就好了吧

  • Laravel where 写法 at 2017-01-26 15:39:44
    Category::where('isCheck', 1)
        ->whereRaw('instr(`Myrootid `, ?)', [",$id,"])
        ->get();

    不知道是不是你想要的。

  • 写在 Laravel China 社区正式突破 10000 用户之际 at 2017-01-18 12:09:56

    赞👍🏻

  • Rbac-Laravel 拓展包,轻松搞定权限控制! at 2017-01-17 11:42:12

    @springjk 世上本没有轮子,造的人多了就有了轮子。造个轮子未必是为了竞争,用了能满足简单需求,不用不影响功能,没有什么优化之说。发出来也本是为了相互学习。😌

  • Laravel Auth 重定向 at 2017-01-15 00:28:05

    您用的是不是百度翻译😂

  • 类似 Laravel 框架这样显式路由的写法真的好吗? at 2017-01-12 12:49:22

    @JokerRoc 脱离框架来说吧,我觉着,一个系统就好比一本书,路由就是这本书的目录索引,一个好的目录对于书的重要性可想而知。而这种维护成本不应该是我们想要做减法的那一部分吧?所以值不值得,就在于愿不愿意去著一本好书。

    另外,在做了很多Web之外的项目后,逐渐会发现隐式路由局限性太大了,用一个Github的接口为例子,/repos/:owner/:repo/issues/:issue_number/timeline,类似这样的URL怎么很好地用隐式路由实现?退一步来讲,这类URL咱们就直接使用显示路由好了,那么问题又来了,两种路由并存才是维护的灾难吧。当然你也可以认为两种方式并存是OK,存在即合理嘛。

    其实我并没有冒犯你的意思。当年在没有接触Laravel之前,我也使用Yii、CI,当时也觉得这种路由方式没毛病,完全OK啊。所以,好坏在于自己的主观意识。大家共勉😊