php - Laravel 使用DB::insert()插入数据,字段created_at为0000...?
ringa_lee
ringa_lee 2017-04-11 10:10:53
[PHP讨论组]

这是artilce_info

$table->increments('id');
            $table->unsignedInteger('user_id');
            $table->string('title');
            $table->integer('read_num');
            $table->timestamps();

这是插入的代码

        DB::beginTransaction();
        try {
            $artInfoId = DB::table('article_info')->insertGetId([
                'title' => $title,
                'user_id' => $userId,
                'read_num' => 0,
            ]);
            DB::table('article')->insert([
                'art_info_id' => $artInfoId,
                'content' => $body,
            ]);
            DB::commit();
            return redirect()->route('blog.index');
        } catch(\Exception $exception) {
            DB::rollBack();
            return back()->withErrors($exception->getMessage())->withInput();
        }

插入一条数据和,数据库中created_atupdated_at字段为0000-00-00 00:00:00

ringa_lee
ringa_lee

ringa_lee

全部回复(4)
PHPz

通过Query Builder的方式插入数据,laravel是不会自动帮你管理created_at,updated_at这些字段的。你需要通过Model类处理,如:

$artInfo = new ArtInfo([
    'title' => $title,
    'user_id' => $userId,
    'read_num' => 0,
]);
$artInfo->save();

这样就可以自动生成对应时间

伊谢尔伦

你可以使用Eloquent ORM,就可以自动生成created_at,updated_at,另外你如果要指定时间戳格式的话。在model类 使用 protected $dateFormat = 'U';

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class article extends Model
{

    protected $dateFormat = 'U';
}
大家讲道理

使用create

ArtInfo::create([
    'title' => $title,
    'user_id' => $userId,
    'read_num' => 0,
]);
伊谢尔伦

原生的插入语句,Laravel是不会自动帮你插入created_at和updated_at字段的。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号