小编arv*_*vil的帖子

使用diffForHumans()方法使用“ ago”对now()与日期时间的碳差异

根据手册:http : //carbon.nesbot.com/docs/#api-humandiff

得到一个 ago

将过去的值与现在的默认值进行比较时

但是无论我做什么,我都无法 ago

return $datetime->diffForHumans(Carbon::now())

结果到before,而

return Carbon::now()->diffForHumans($datetime);

结果after

但是正如您可以清楚地看到,我上面的两个代码段都比较了past($ datetime)和现在的默认值(Carbon :: now()),所以我不明白为什么我找不到以前?希望有人能帮忙。我只需要回声ago。谢谢!

php datetime php-carbon

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

如何捕获由 hash bang 锚链接引起的滚动事件?

我只是想知道是否有更好的方法来解决这个问题

因此,假设您有jump to使用锚标记的链接:

www.example.com/#about

打开该链接将使浏览器自动滚动到带有以下内容的部分

<div id="about"></div>

现在,我想捕获此scroll事件,以便我可以添加更多offset有关浏览器应使用多少滚动的信息。

这样做的原因是因为我有一个fixed消耗120px浏览器的导航菜单。

问候,

html javascript anchor jquery scroll

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

从类中导入静态方法并为其添加别名

我试图从实用程序/帮助程序类中为静态方法添加别名,文档没有提供有关静态方法的任何信息,并且使用那里定义的方法不适用于静态方法(看起来是这样)。

假设我有这门课:

namespace App\Helpers;

class HTTP {

    public static function extract_path_from_url( string $url ) {
        $parsed_url = wp_parse_url( $url );
        if ( ! isset( $parsed_url['path'] ) ) {
            return false;
        }
        return (string) $parsed_url['path'];

    }

}
Run Code Online (Sandbox Code Playgroud)

然后尝试在不同的文件上使用它:

<?php

echo \App\Helpers\HTTP::extract_path_from_url( 'http://example.com/test' );
Run Code Online (Sandbox Code Playgroud)

上面那个有效

但试图给它起别名:

<?php

use \App\Helpers\HTTP\extract_path_from_url as extract_path;

echo extract_path( 'http://example.com/test' );
Run Code Online (Sandbox Code Playgroud)

会输出

Fatal error: Uncaught Error: Call to undefined function App\Helpers\HTTP\extract_path_from_url()
Run Code Online (Sandbox Code Playgroud)

甚至:

<?php

use \App\Helpers\HTTP::extract_path_from_url as extract_path;

echo extract_path( 'http://example.com/test' );
Run Code Online (Sandbox Code Playgroud)

显示这个奇怪的错误:

Parse error: syntax error, …
Run Code Online (Sandbox Code Playgroud)

php import alias

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

优雅地处理要由PHP处理的大型MySQL行

因此,我接触到越来越多的现实生活应用程序,其中: SELECT * FROM table已经太重了,导致 Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 47 bytes) in

我目前正在做的是将这些mySQL行拆分为batches,设置一个变量$perPage,然后将一个$_GET['page']变量传递给页面,该链接为:process.php?page=1

我认为这是“好”。但是有时候,我们想要完全自动化。所以我设置了$nextPage = (int) $_GET['page'] + 1,然后将页面重定向到处理这些mySQL行之后的迭代 header("Location: process.php?p="$nextPage)

现在,这会给您一些问题:

  1. 很难调试。如果在第3页中发布了警告/通知,则除非您记录它们或查看php日志,否则您将无法看到这些输出。
  2. 浏览器不允许您重定向太多。因此,我们可以使用命令行curl或编写另一个process.php将启用cURL 并启用跟随重定向的php脚本。

这是我目前的处理方式,但有时我认为我需要编写更多代码才能使其正常工作有点令人沮丧。有谁知道如何更优雅地处理这些问题?

php mysql

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

eloquent - 查询构建器中的动态和条件whereHas()

我试图在我的查询构建器中避免DRY,特别是在链中添加其他方法.

例如,这最初是我的查询构建器:

$products = $app->myShop->realProducts()
        ->where($query)
        ->skip($skip)->take($take)
        ->orderBy($sortKey, $sortOrder)
        ->get();
Run Code Online (Sandbox Code Playgroud)

然后,如果用户使用了一些过滤器,我需要将一个方法(特别是a whereHas())附加到查询构建器

    $products = $app->myShop->realProducts()
        ->where($query)
        ->whereHas('colour', function ($q) use ($find) {
            $q->where('colour_slug', $find);
        })
        ->skip($skip)->take($take)
        ->orderBy($sortKey, $sortOrder)
        ->get();
Run Code Online (Sandbox Code Playgroud)

我觉得要实现这个结果"丑陋",我必须不断重复那些构建器查询:

if ($user_filtered_this_page == TRUE) {

    $products = $app->myShop->realProducts()->where($query)
        ->whereHas('colour', function ($q) use ($find) {
            $q->where('colour_slug', $find);
        })
        ->skip($skip)->take($take)
        ->orderBy($sortKey, $sortOrder)
        ->get();

} else {

    $products = $app->myShop->realProducts()->where($query)
        ->skip($skip)->take($take)
        ->orderBy($sortKey, $sortOrder)
        ->get();
}
Run Code Online (Sandbox Code Playgroud)

是否有更聪明或更优雅的方式动态和有条件地将whereHas()方法附加到链?

希望有人可以提供帮助.谢谢!

php laravel eloquent laravel-eloquent

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