小编pro*_*mer的帖子

如何在Laravel Eloquent查询中(或使用查询生成器)对表进行别名?

让我们说我们正在使用Laravel的查询构建器:

$users = DB::table('really_long_table_name')
           ->select('really_long_table_name.id')
           ->get();
Run Code Online (Sandbox Code Playgroud)

我正在寻找这个SQL的等价物:

really_long_table_name AS short_name
Run Code Online (Sandbox Code Playgroud)

当我必须输入大量的选择和数据时,这将特别有用(或者通常我也会在select的列别名中包含别名,并且它会在结果数组中使用).没有任何表别名,我会有更多的输入,一切都变得不那么可读.在laravel docs中找不到答案,有什么想法吗?

php laravel eloquent laravel-4

126
推荐指数
6
解决办法
15万
查看次数

在Laravel 5中使用表单请求验证时如何添加自定义验证规则

我正在使用表单请求验证方法来验证laravel 5中的请求.我想用表单请求验证方法添加我自己的验证规则.我的请求类在下面给出.我想添加自定义验证numeric_array和字段项.

  protected $rules = [
      'shipping_country' => ['max:60'],
      'items' => ['array|numericarray']
];
Run Code Online (Sandbox Code Playgroud)

我的cusotom功能如下

 Validator::extend('numericarray', function($attribute, $value, $parameters) {
            foreach ($value as $v) {
                if (!is_int($v)) {
                    return false;
                }
            }
            return true;
        });
Run Code Online (Sandbox Code Playgroud)

如何在laravel5中使用此验证方法进行表单请求验证?

php custom-validators laravel laravel-5 laravel-validation

37
推荐指数
6
解决办法
5万
查看次数

Laravel如何具体构建和检查CSRF令牌?

我在我的公共网站上使用Laravel的CSRF保护.但是,由于Laravel使用会话来维护这一点,我担心用户可能会离开他们的计算机并返回他们之前打开的页面,但却发现ajax请求不起作用.ajax请求不起作用,因为会话已超时(并且令牌不再验证?).如果这些用户"登录"了用户,那么我可以简单地将他们重定向回登录页面.由于它们是公共用户,因此用户被迫刷新页面以使其恢复工作(笨拙).

或者我错了吗?是否仍然会通过Laravel对CSRF令牌进行验证(即使会话超时后,页面仍将通过令牌发送......但是Laravel会用它做什么?).最佳解决方案是使令牌部分基于时间戳,以便我们可以将令牌到期限制与会话时间限制区分开来.我可以让我的CSRF令牌持续2天(因此只有那些离开2天的用户才能返回死页).

最后,这让我想到了一个问题:Laravel框架中的具体代码在哪里处理?我正在尝试找到它.另外,我可以轻松地替换掉,或者我留下来创建我自己的版本csrf_token();输出到我的页面然后我需要创建自己的路由过滤器来配合它.

php csrf token laravel laravel-4

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

Lumen中的任务调度是否像Laravel一样工作?

您可以在Laravel的最新文档中看到任务调度,但Lumen的文档没有提到这一点.但是,看起来Lumen的Console Kernel文件就像Laravel一样有一个调度方法.调度在两者中是否相同,或者在Lumen中进行调度的注意事项是什么?

scheduled-tasks laravel lumen laravel-5.1

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

在域驱动设计实体和聚合根中处理和返回错误(非异常和异常)的方法是什么?

我正在尝试找一篇关于DDD实体如何处理错误的好文章/示例(以及将被视为异常错误和什么不会错误)以及它们如何将它们传递到调用应用程序层(通常包含事务中的操作)那将需要回滚).

目前我正在考虑将所有会破坏聚合事务(例如验证)的错误视为异常.这样我就可以在"catch"块中回滚事务.例如:

SomeApplicationService:

// start transaction here
// ...

try 
{
    $user = $userRepository->userOfId($id);
    $user->doSomething();
    $user->doSomethingElse();  // <-- imagine an error thrown here
    $userRepository->save($user);
} 
catch (CustomFriendlyForUIException $e)
{
    // Custom Friendly for UI error
    // Rollback transaction and add error/message to UI payload DTO
    // ...
}
catch (AnotherCustomException $e)
{
    // Not friendly to UI, so use general error message for UI
    // Rollback transaction and add error/message to UI payload DTO
    // ...
}
catch (Exception $e) …
Run Code Online (Sandbox Code Playgroud)

error-handling domain-driven-design exception-handling

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

如何在Vue组件中覆盖范围样式?

让我们保存我有一个.Vue组件,我从某个地方抓起Github.我们称之为CompB,我们将在那里为蓝色标题添加一个CSS规则集:

CompB.Vue(我不拥有的依赖项,可能是从Github中提取的)

<template>
  ...
</template>

<script>
  ...
</script>

<style lang="scss" scoped>
  .compb-header {
    color: blue;
  }
</style>
Run Code Online (Sandbox Code Playgroud)

我计划将CompB嵌入到我自己的项目的CompA中.现在我有什么选择来覆盖范围规则?

css webpack vue.js vuejs2

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

如何在Lumen中进行{{asset('/ css/app.css')}}?

在Lumen中,我可以在我的刀片模板中执行此操作:

{{ url('/css/app.css') }}
Run Code Online (Sandbox Code Playgroud)

在Laravel我能做到

{{ asset('/css/app.css') }}
Run Code Online (Sandbox Code Playgroud)

我必须在Lumen中使用url helper吗?

assets laravel blade lumen

8
推荐指数
2
解决办法
9620
查看次数

如何阻止 Mouseleave 在目标上方出现的元素上触发?

jQuery 的 mouseleave 似乎会在任何覆盖元素上触发。我不希望这些覆盖元素被视为“超出”我的目标区域。这是一个使用 jQueryUI 中的日期选择器的简单示例:

http://jsfiddle.net/6Wm9L/

$("#datepicker").datepicker({});

$(".wrapper")
.mouseenter(function(){
    $("#status").html("Status: Mouse is INSIDE");
})
.mouseleave(function(){
    $("#status").html("Status: Mouse is OUTSIDE");
});
Run Code Online (Sandbox Code Playgroud)

请注意,当鼠标悬停在日期选择器上时,将触发 mouseleave。对于这个日期选择器示例,有什么好的解决方案可以防止这种情况发生?对于我未来可能添加的涵盖目标的任何元素,什么是好的解决方案?

javascript jquery mouseleave jquery-ui-datepicker

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

如何折叠/展开PhpStorm中文件中的所有注释块?

在PhpStorm中,什么是折叠或扩展文件中所有注释(doc)块的快速方法?

这里的文档中它说:

Folding and expanding code blocks works for entire classes, inner and
anonymous classes, method bodies, import lists, comments, HTML and XML tags,
closures and language injections.

然后进一步说:

If you hold the Alt modifier and click a toggle button in the gutter, the code block
will be collapsed or expanded recursively, i.e. all sub-blocks within the parent 
block will also be collapsed or expanded.

但是我没看到这是如何Alt modifer工作的?我按住Alt然后单击切换按钮,只有该块单独折叠.我在顶级doc块中以及属性/方法doc块中尝试了这个.我错过了什么吗?

php comments docblocks collapse phpstorm

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

如何在域驱动设计中共享表单和值对象之间的验证?

#1.验证表单上的EmailAddress

我有一个后端表单类,其emailAddress属性具有验证逻辑,以便我可以将错误消息返回给用户.我使用类似的方式验证所有表单输入:

$form->fillWith($request->input());

if($form->validate()){
    $form->dispatch($command); // if synchronous, form takes command's messageBag
}

return response($form->getMessageBag()->toJson());
Run Code Online (Sandbox Code Playgroud)

#2.在命令处理程序中验证EmailAddress值对象

我有一个命令处理程序,它将获取原始字符串电子邮件并创建一个值对象.如果电子邮件无效,则value对象将在创建时抛出异常:

public function handle($command){

   try {
      $emailAddress = new ValueObjects\EmailAddress($command->emailAddress);

      // create more value objects...

      // do something else with the domain...

   } catch (DomainException $e) {
        $this->messageBag->add("errors", $e->getMessage());
   } catch (\Exception $e) {
        $this->messageBag->add("errors", "unexpected error");
   }

   return $this->messageBag;
}
Run Code Online (Sandbox Code Playgroud)

在#1中,我希望在发送命令之前尽早捕获验证.但是在#2中,当我构建VO时,重复验证逻辑.

我遇到的问题:

  • 如果我需要更改电子邮件地址的验证要求,那么我必须更新这两个地方.
  • 如果我在表单上使用VO,那么在传递给命令时我将不得不再次解构它们.另外,如果我的表单处于不同的Bounded Context中,那么我将让VO从其他Bounded Context中泄漏域(可能这是必要的吗?).

所以我的问题是,我应该创建一些验证器对象,我的表单验证和VO可以共享/利用吗?或者如何捕获表单和值对象之间的重复验证问题?

forms validation domain-driven-design value-objects

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