导入 csv excel 文件时,Laravel 7 时间戳迁移始终返回 0000-00-00 00:00:00
Posted
技术标签:
【中文标题】导入 csv excel 文件时,Laravel 7 时间戳迁移始终返回 0000-00-00 00:00:00【英文标题】:Laravel 7 timestamp migration always return 0000-00-00 00:00:00 when importing a csv excel file 【发布时间】:2020-12-12 07:56:14 【问题描述】:我搜索了所有相关文章,但没有解决方案。当我意识到时间戳不正确时,我正在为 Laravel 设置站点地图。所以这对 SEO 不利。
我在 mysql 数据库的 created_at 和 updated_at 字段中总是有那些 0。
我不确定这是 Laravel、SQL 还是 Excel 问题。
我做什么:
在我的本地主机中迁移我在 laravel 中的表$table->timestamps();
也试过了,但没有
$table->timestamp('created_at')->useCurrent();
$table->timestamp('updated_at')->useCurrent();
$timestamps = false;
$table->timestamp('created_at')->default(DB::raw('CURRENT_TIMESTAMP'));
我从本地主机导入服务器 phpmyadmin 中的 sql 数据库
并在phpmyadmin中导入excel csv文件和数据。
也许还有另一种方法可以正确地做到这一点?
【问题讨论】:
在您的 MySQL 表中,该列是否正常工作? 是的,但从 csv 导入时全部为零 确保日期格式为日期格式:Ymd H:i:s 或者您可以使用控制器进行插入,并且 $timestamp = date('Ymd H:i:s ');测试 MySql 列是否设置成功。如果您的格式不正确,它将显示那些 0。 是的,我确实解决了这个问题。迁移表时的 Laravel 设置不正确。我必须使用 maatwebsite 手动导入数据才能正确显示日期。但我会在下次做笔记。我还为我的表的所有 id 手动添加主键和自动增量。所以从 laravel 7 迁移似乎有一些问题。总之谢谢 没问题,祝你好运! 【参考方案1】:如果您使用的是maatwebsite/excel,并且如果您同样通过迁移创建了时间戳,那么模型会自动插入时间戳。
$table->timestamps();
注意:确保您的表列 created_at 不存在于模型的可填充数组中,并且您没有使用文档中提到的 WithUpserts 方法。 见:https://docs.laravel-excel.com/3.1/imports/model.html
protected $fillable = [
'users_id',
'name',
'created_at' //it should not be here
]
使用碳的另一种方法
您必须通过使用碳来添加时间戳。
首先将 created_at 添加到模型的可填充数组中
protected $fillable = [
'name',
'created_at' //must be present
]
然后你必须使用碳,进入你的导入文件夹并在你的导入文件中,带来下面标有 cmets 的更改。
<?php
namespace App\Imports;
use Carbon\Carbon; //add this line of code
use App\User;
use Illuminate\Support\Facades\Hash;
use Maatwebsite\Excel\Concerns\ToModel;
class UsersImport implements ToModel
/**
* @param array $row
*
* @return User|null
*/
public function model(array $row)
return new User([
'created_at'=> now(), //add this line of code
'name' => $row[0],
]);
注意: 它也适用于 upserts,在 upserts 中,maatwebsite 无法添加时间戳,它会为 null,但是通过上述方法,您可以存储时间戳,您可以对 updated_at 使用相同的方法。
【讨论】:
以上是关于导入 csv excel 文件时,Laravel 7 时间戳迁移始终返回 0000-00-00 00:00:00的主要内容,如果未能解决你的问题,请参考以下文章
在 Laravel 5 中使用 Laravel Excel 实现 Excel/CSV 文件导入导出功能(转)
Laravel Excel 实现 Excel-CSV 文件导入导出功能
Laravel 5使用Laravel Excel实现Excel/CSV文件导入导出的功能详解