自动不在laravel中插入created_at和updated_at不起作用。
DB::table('commundityvendordata')->insert($commdata);
我正在使用上面的语句传递一个数组来插入多个记录$commdata工作正常,但是当检查数据库中的created_at和updated_at列时没有获取时间戳。
型号:
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class commundityvendordata extends Model
{
use HasFactory;
protected $table ='commundityvendordata';
}
迁移:
public function up()
{
Schema::create('commundityvendordata', function (Blueprint $table) {
$table->bigIncrements('vender_id')->unsignedBigInteger();
$table->date('new_date');
$table->unsignedBigInteger('cd_id');
$table->foreign('cd_id')->references('cd_id')->on('communitydata')->onDelete('cascade');
$table->unsignedBigInteger('cn_id');
$table->foreign('cn_id')->references('cd_id')->on('communitydata')->onDelete('cascade');
$table->unsignedBigInteger('unit_id');
$table->foreign('unit_id')->references('unit_id')->on('units')->onDelete('cascade');
$table->unsignedInteger('vender1');
$table->unsignedInteger('vender2');
$table->unsignedInteger('vender3');
$table->unsignedInteger('vender4');
$table->timestamps();
});
}
控制器:
function commundityvendordata(Request $request){
$collection = count(collect($request));
$cvendordata = new commundityvendordata;
for ($i=0; $i < $collection; $i++) {
$new_date = Carbon::parse($request->new_date)->format('Y-m-d');
$CCode=communitydata::where('c_code','=',$request->ccode[$i])->first();
$cd_id = $CCode['cd_id'];
$CName=communitydata::where('c_name','=',$request->cname[$i])->first();
$cn_id = $CName['cd_id'];
$CUnit=units::where('unit','=',$request->cunit[$i])->first();
$unit_id = $CUnit['unit_id'];
$vender1 = $request->vendor1[$i];
$vender2 = $request->vendor2[$i];
$vender3 = $request->vendor3[$i];
$vender4 = $request->vendor4[$i];
$commdata = [
'new_date' => $new_date,
'cd_id' => $cd_id,
'cn_id' => $cn_id,
'unit_id' => $unit_id,
'vender1' => $vender1,
'vender2' => $vender2,
'vender3' => $vender3,
'vender4' => $vender4
];
if($cd_id != ''){
DB::table('commundityvendordata')->insert($commdata);
}else{
return back()->with('success','Data Saved...');
}
}
}
created_at
时,才会自动插入
updated_at
和 Eloquent
。
如果您使用
DB
外观,则必须手动插入它们:
$commdata = [
'new_date' => $new_date,
'cd_id' => $cd_id,
'cn_id' => $cn_id,
'unit_id' => $unit_id,
'vender1' => $vender1,
'vender2' => $vender2,
'vender3' => $vender3,
'vender4' => $vender4,
"created_at" => \Carbon\Carbon::now(), # new \Datetime()
"updated_at" => \Carbon\Carbon::now(), # new \Datetime()
];
如果你想充分利用 Laravel 并且没有高级/复杂的查询,我建议你使用 Models 和 Eloquent。
这是因为您尚未设置
created_at
和 updated_at
的默认值。为此,您可以遵循 2-3 个解决方案:
commundityvendordata
)created_at
和 updated_at
updated_at
,您可以将属性设置为更新时 Current_Timestamp
在您的
commdata
数组中,只需添加 created_at
和 updated_at
$commdata = [
...
'created_at' => date("Y-m-d h:i:s"),
'updated_at' => date("Y-m-d h:i:s"),
];
就是要对你的Scheme做出改变”
Schema::create('commundityvendordata', function (Blueprint $table) {
$table->timestamp('created_at')->default(DB::raw('CURRENT_TIMESTAMP'));
$table->timestamp('updated_at')->default(DB::raw('CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP'));
});
}