You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Laravel迁移中将时间戳转换为波斯历(Jalali)

在Laravel迁移中直接将时间戳转为波斯历创建视图

方法一:使用morilog/jalali的数据库原生函数

morilog/jalali包内置了数据库层面的波斯历转换函数,你可以直接在创建视图的SQL语句中调用它,实时转换created_at字段:

public function up()
{
    DB::statement("
        CREATE VIEW getStudentRegisteredInfo AS
        SELECT 
            mbr_id,
            -- 按需求调整格式,比如仅日期用%Y/%m/%d
            jdate_format(created_at, '%Y/%m/%d %H:%i:%s') AS created_at_jalali
        FROM members
    ");
}

方法二:结合Laravel查询构造器

如果你偏好Laravel的查询构造器语法,可通过selectRaw生成对应SQL:

use Illuminate\Support\Facades\DB;
use Morilog\Jalali\Jalalian;

public function up()
{
    $viewQuery = DB::table('members')
        ->select(
            'mbr_id',
            DB::raw("jdate_format(created_at, '".Jalalian::DEFAULT_FORMAT."') AS created_at_jalali")
        );

    DB::statement("CREATE VIEW getStudentRegisteredInfo AS {$viewQuery->toSql()}");
}

关键注意事项

  • 确保morilog/jalali已正确安装配置,若数据库未加载相关自定义函数,可运行php artisan jalali:publish完成注册。
  • 可根据业务需求修改日期格式参数,比如%Y-%m-%d或%d %B %Y(波斯历月份名称)。
  • 若需要保留原时间戳,可同时返回created_at和转换后的created_at_jalali字段。

回滚迁移配置

在迁移的down方法中添加视图删除逻辑:

public function down()
{
    DB::statement("DROP VIEW IF EXISTS getStudentRegisteredInfo");
}

内容的提问来源于stack exchange,提问作者Pouya Vaghefi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 13:06:28