在 laravel 中自動不插入 created_at 和 updated_at 不起作用。
DB::table('commundityvendordata')->insert($commdata);
我正在使用上面的陳述句傳遞一個陣列來插入多條記錄 $commdataworking 但是當檢查我在資料庫中的 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...');
}
}
}
資料庫表螢屏截圖:

uj5u.com熱心網友回復:
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。
uj5u.com熱心網友回復:
這是因為您沒有為created_at和設定默認值updated_at。為此,您可以遵循 2-3 個解決方案:
解決方案 1
- 轉到 phpmyadmin
- 選擇資料庫表。(在你的情況下,它是
commundityvendordata) - 然后轉到結構并設定和的默認
created_at值updated_at - 對于
updated_at,您可以將 Attribute 設定為 on updateCurrent_Timestamp
解決方案 2
在您的commdata陣列中,只需添加created_atandupdated_at
$commdata = [
...
'created_at' => date("Y-m-d h:i:s"),
'updated_at' => date("Y-m-d h:i:s"),
];
解決方案 3
是在您的方案中進行更改”
Schema::create('commundityvendordata', function (Blueprint $table) {
$table->timestamps('created_at')->default(DB::raw('CURRENT_TIMESTAMP'));
$table->timestamp('updated_at')->default(DB::raw('CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP'));
});
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/451166.html
上一篇:通過表單將id傳遞給外鍵
