QQ泡沫乐园 · 免费提供游戏辅助,破解软件,活动资讯,喜欢记得收藏哦!
综合软件_线报活动_游戏辅助_最新电影_最优质的的辅助分享平台

ONUPDATE_TIMESTAMP(#039;CURRENT)方法失败(图)

网络 2022-11-18 15:08

并非完美无缺。对于 PostgreSQL 'CURRENT_TIMESTAMP' 返回格式为:2014-08-11 15:06:29.692439。这会导致 Carbon::createFromFormat('Ymd H:i:s', $timestamp) 方法失败(它无法解析尾随毫秒)。这是 Laravel 在访问时间戳时使用的。要修复 PostgreSQL,请使用: DB::raw('now()::timestamp(0)') (参考:postgresql.org/docs/8.1/static/…)

我在 Laravel 中使用以下自定义:

默认 created_at 为当前时间戳更新记录时更新时间戳

首先,我将创建一个文件,helpers.php,在 Laravel 的根目录中并插入以下内容:

{ $connection = config('database.default'); return config('database.connections.' . $connection . '.driver'); } } if (!function_exists('is_database_driver')) { function is_database_driver(string $driver): bool { return $driver === database_driver();

无法更新时间戳列_无法更新时间戳列_oracle 批量更新某列

} }

在 composer.json 中,我将以下内容插入autoload.这允许作曲家自动发现 helpers.php。

"autoload": {
        "files": [

            "app/Services/Uploads/Processors/processor_functions.php",
            "app/helpers.php"
        ]
    },

我在我的 Laravel 模型中使用以下内容。

无法更新时间戳列_无法更新时间戳列_oracle 批量更新某列

if (is_database_driver('sqlite')) {
            $table->timestamps();
        } else {
            $table->timestamp('created_at')->default(\DB::raw('CURRENT_TIMESTAMP'));
            $table->timestamp('updated_at')
                ->default(DB::raw('CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP'));
        }

这允许我的团队继续使用 sqlite 进行单元测试。ON UPDATE CURRENT_TIMESTAMP是 MySQL 快捷方式,在 sqlite 中不可用。

相关文章