【问题标题】:Why created_at updated_at are null on insertion为什么 created_at updated_at 在插入时为空
【发布时间】:2017-01-23 09:41:09
【问题描述】:

在我的 laravel 项目中,我需要一次添加多条记录,我还想自动插入 created_at 和 updated_at 作为在 save() 中的工作。但不能在 insert 方法中工作。

for($i=0; $i<count($req->location_id); $i++)
                    {
                            $asset_arr[$i]['property_id'] = $this->id;
                            $asset_arr[$i]['location_id'] = $req->location_id[$i];
                            $asset_arr[$i]['model_id'] = $req->model_id[$i];
                            $asset_arr[$i]['appliance_owner'] = $req->appliance_owner[$i];
                            $asset_arr[$i]['current'] = $req->current[$i];
                            if($req->installdate[$i]!=''){
                                $asset_arr[$i]['installdate'] = date('Y-m-d',strtotime($req->installdate[$i]));
                            }
                            $asset_arr[$i]['comment'] = $req->comment[$i];
                    }
                    if(!empty($asset_arr)){

                            Asset::insert($asset_arr);
                    }

【问题讨论】:

    标签: php laravel


    【解决方案1】:

    我认为你应该使用create()而不是insert()方法

    Laravel 的 created_at/updated_at 是 Illuminate\Database\Eloquent\Model 的一部分。 Insert() 不是一个雄辩的方法

    【讨论】:

    • 在添加答案后,我看到了 Alexey 的答案。因为我是从手机应用进入的。
    • insert() 那里很好。
    【解决方案2】:

    insert() 不是 Eloquent 方法,因此您需要手动添加时间戳。做这样的事情:

    $asset_arr[$i]['created_at'] = Carbon::now();
    $asset_arr[$i]['updated_at'] = Carbon::now();
    

    【讨论】:

    • 有没有什么雄辩的方法可以输入多条记录?
    • @Alfizamalek 不,insert() 是唯一允许一次插入多行的方法。
    • 其实我用foreach里面的create()方法来添加多行:)
    • @Rashad 不会批量插入。
    • @SanzeebAryal 啊,好的,明白了
    猜你喜欢
    • 1970-01-01
    • 2016-08-28
    • 1970-01-01
    • 1970-01-01
    • 2016-06-13
    • 2015-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多