假设我想显示一个完整的奖项列表,其中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部分的任何想法参数化?
我希望我的所有存储库都列在一个服务提供商中,但我不希望它们一次全部加载...
考虑以下服务提供商:
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 文档,我可以将绑定的注册推迟到需要时。但是,当我在单个服务提供者中添加多个绑定时,这是否有效?具体来说,我的意思是,它会推迟然后加载所有还是只加载需要的?
我在本地计算机上使用PhpStorm,Git和VirtualBox进行本地开发.我使用Git来处理将工作转移到临时或生产环境的过程.目前我正在使用MobaXterm(Windows的一个优秀的免费标签ssh客户端)来终端访问在登台和生产服务器上做的事情. PhpStorm内置了一个本地终端,但我如何使用它来访问多个ssh终端?(这样我可以从我的IDE中进行本地,远程登台和远程生产终端访问)
我正在努力决定照顾演示逻辑的最佳位置.我已经使用查询的每个方法分离出我的读取查询(CQRS),并为我的View生成DTO.但我的观点只是散布着变量的模板,它们来自DTO.他们没有任何逻辑.
假设我想做一些事情,比如重新格式化日期的外观,将标志转换为实际的描述性单词,或根据从数据库中查询的内容添加显示内容的条件,等等.我想把这个逻辑放在每个查询中,并且不要担心太干(我发现在某些情况下,如果你干得太多,那么你可能会难以改变,因为你必须检查每个依赖或者希望你的单元测试能够坚持下去).我可能会在这里和那里使用一些"帮助器"进行格式化,我发现我一直在做,但我没有看到需要添加一个完整的"表示层".因此,表示逻辑将驻留在每个查询中,并进入返回的DTO,直接放入View中.这将使CQRS的Read端保持超薄,并且每个View对应于Read查询是有意义的.但我也担心这个表示逻辑中的一些非常特定于域.一个新的开发人员需要查看其他查询并重复相同的格式化技术,而不是直接从原始查询中抛出数据.
这是合理的方法,还是在DDD/CQRS中使用了另一种方法?我很难找到CQRS研究的任何指导.注意:我碰巧使用PHP/MySQL,但我想这个问题与语言无关.
在这里考虑我的小提琴: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"时,我没有得到任何结果?似乎任何包含空格并在短划线后显示的搜索字符串都不起作用.
有什么想法发生了什么?