小编pro*_*mer的帖子

Laravel Eloquent/Query Builder中LEFT JOIN的ON子句中的参数化查询绑定

假设我想显示一个完整的奖项列表,其中type ="color":

Awards        Type     2013 Winner
======        ====     ===========
Blue Award    color       Tom
Red Award     color
Green Award   color       Dan  
Run Code Online (Sandbox Code Playgroud)

为了达到这个结果,我可以在Laravel中查询如下:

$year = '2013';

$awards = DB::table('awards')
             ->leftJoin('winners', function($join) use ($year)
                   {
                        $join->on('awards.id','=','winners.award_id');
                        $join->on('winners.year','=',DB::raw("'".$year."'"));
                   }
             ->where('awards.type','color')
             ->get();
Run Code Online (Sandbox Code Playgroud)

如果输出Laravel生成的SQL,您将看到只有WHERE子句被参数化,并且如果从不受信任的源获取它,则ON子句中的$ year 容易受到sql注入的攻击.此外,查询的缓存潜力也会降低,因为$ year会经常更改.注意:如果您认为我只是将第二个左连接条件添加到查询的WHERE,则 这些不一样.

有关如何获取查询的$ year部分的任何想法参数化?

php parameterized-query laravel eloquent laravel-4

4
推荐指数
1
解决办法
3059
查看次数

Laravel 如何延迟在单个服务提供者中列出的多个绑定?

我希望我的所有存储库都列在一个服务提供商中,但我希望它们一次全部加载...

考虑以下服务提供商:

class RepositoryServiceProvider extends ServiceProvider {

    protected $defer = true;

    public function register()
    {
        $this->app->bind(
            'App\Repositories\Contracts\FooRepository',
            'App\Repositories\SQL\FooSQLRepository');

        $this->app->bind(
            'App\Repositories\Contracts\BarRepository',
            'App\Repositories\SQL\BarSQLRepository');

        // and more to be added later...
    }

    public function provides()
    {

        // Will it defer and load all these at once? Or only the one(s) needed?
        return ['App\Repositories\Contracts\FooRepository',
                'App\Repositories\Contracts\BarRepository'];
    }

}
Run Code Online (Sandbox Code Playgroud)

根据 Laravel 文档,我可以将绑定的注册推迟到需要时。但是,当我在单个服务提供者中添加多个绑定时,这是否有效?具体来说,我的意思是,它会推迟然后加载所有还是加载需要的

php deferred-loading service-provider laravel laravel-5

4
推荐指数
1
解决办法
1402
查看次数

我可以在PhpStorm中使用远程ssh终端访问吗?

我在本地计算机上使用PhpStorm,Git和VirtualBox进行本地开发.我使用Git来处理将工作转移到临时或生产环境的过程.目前我正在使用MobaXterm(Windows的一个优秀的免费标签ssh客户端)来终端访问在登台和生产服务器上做的事情. PhpStorm内置了一个本地终端,但我如何使用它来访问多个ssh终端?(这样我可以从我的IDE中进行本地,远程登台和远程生产终端访问)

ide ssh terminal phpstorm

3
推荐指数
1
解决办法
2324
查看次数

在DDD和CQRS中,我应该将所需的表示逻辑直接放入每个Read(Finder)查询中吗?

我正在努力决定照顾演示逻辑的最佳位置.我已经使用查询的每个方法分离出我的读取查询(CQRS),并为我的View生成DTO.但我的观点只是散布着变量的模板,它们来自DTO.他们没有任何逻辑.

假设我想做一些事情,比如重新格式化日期的外观,将标志转换为实际的描述性单词,或根据从数据库中查询的内容添加显示内容的条件,等等.我想把这个逻辑放在每个查询中,并且不要担心太干(我发现在某些情况下,如果你干得太多,那么你可能会难以改变,因为你必须检查每个依赖或者希望你的单元测试能够坚持下去).我可能会在这里和那里使用一些"帮助器"进行格式化,我发现我一直在做,但我没有看到需要添加一个完整的"表示层".因此,表示逻辑将驻留在每个查询中,并进入返回的DTO,直接放入View中.这将使CQRS的Read端保持超薄,并且每个View对应于Read查询是有意义的.但我也担心这个表示逻辑中的一些非常特定于域.一个新的开发人员需要查看其他查询并重复相同的格式化技术,而不是直接从原始查询中抛出数据.

这是合理的方法,还是在DDD/CQRS中使用了另一种方法?我很难找到CQRS研究的任何指导.注意:我碰巧使用PHP/MySQL,但我想这个问题与语言无关.

domain-driven-design presentation-layer cqrs

2
推荐指数
1
解决办法
344
查看次数

下拉搜索中的奇怪行为,当使用jquery插件时选择下拉列表

在这里考虑我的小提琴:http://jsfiddle.net/DFhAj/2/
我正在使用流行的jquery插件Chosen.

我有一个select下拉列表,如下所示:

<select>
    <option>Store North - New York, NY</option>
    <option>Store South - San Antonio, TX</option>
    <option>Store South #2 - San Antonio, TX</option>
    <option>Store East - Miami, FL</option>
</select>
Run Code Online (Sandbox Code Playgroud)

当我单击下拉列表并搜索"store south"时,2结果会正确显示.但是,当我搜索"san antonio"时,我没有得到任何结果?似乎任何包含空格并在短划线后显示的搜索字符串都不起作用.

有什么想法发生了什么?

javascript jquery dropdownbox jquery-chosen

1
推荐指数
1
解决办法
977
查看次数