Php 为什么我的时间戳列无法更新或创建
我已经创建了如下表:Php 为什么我的时间戳列无法更新或创建,php,mysql,Php,Mysql,我已经创建了如下表: /** * Run the migrations. * * @return void */ public function up() { Schema::create('coverage_area', function (Blueprint $table) { $table->bigIncrements('id'); $table->unsigned
/**
* Run the migrations.
*
* @return void
*/
public function up() {
Schema::create('coverage_area', function (Blueprint $table) {
$table->bigIncrements('id');
$table->unsignedBigInteger('village_id');
$table->unsignedBigInteger('hub_id');
$table->decimal('price', 15, 2);
$table->boolean('status')->comment('1=active,0=inactive')->default(1);
$table->timestamps();
$table->foreign('village_id')->references('id')->on('villages');
$table->foreign('hub_id')->references('id')->on('hub');
});
$villages = Village::get()->toArray();
foreach ($villages as $key => $village) {
$village_insert = [
'village_id' => $village['id'],
'hub_id' => 1,
'price' => $village['price'],
'status' => $village['status'],
'created_at' => date('Y-m-d H:i:s'),
'updated_at' => date('Y-m-d H:i:s'),
];
DB::table('coverage_area')->insert($village_insert);
}
Schema::table('villages', function (Blueprint $table) {
$table->dropColumn('price');
});
}
这可以创建在创建和更新的列
但是当我使用导入时,比如创建新数据或使用excel中的代码更新数据
public function collection(Collection $rows)
{
$import_error = session('import_error', []);
$import_success = session('import_success', []);
//$villages= Village::select('id','name')->get()->toArray();
$data_insert = [];
foreach ($rows as $row)
{
$price =null;
if (is_numeric($row['price'])) {
$price=$row['price'];
}else{
$priceConvert = str_replace("Rp","",$row['price']);
$priceConvert = str_replace(".","",$priceConvert);
$price = (int)$priceConvert;
}
//$price =
/*if (is_numeric($row['price'])) {
$price=$row['price'];
//dd($price);
continue;
}*/
// dd($price);
$village_id = null;
// dd($row['kelurahan']);
$village_name = $row['kelurahan'];
$district_name = $row['kecamatan'];
$village_id = DB::table('villages')
->join('districts', 'villages.district_id', '=', 'districts.id')
->where('villages.name', $village_name)
->where('districts.name', $district_name)
->value('villages.id');
//dd($village_id);
/* $exist = array_values(array_filter(
$villages,
function ($e) use ($row) {
return $e['name'] == $row['villages'];
}
));*/
if (!is_null($village_id)) {
$id = null;
$hub_id = null;
if (!empty(trim($row['id']))) {
$id = General::decode($row['id']);
}
if (!empty(trim($row['hub_id']))) {
$hub_id = General::decode($row['hub_id']);
}
$data_insert[] = [
'id' => $id,
'village_id'=>$village_id,
'hub_id'=>$hub_id,
'price' => $row['price'],
'status' => $row['status'],
];
$import_success['Coverage_area'][] = [
'village_id'=>$village_id
];
}else {
$import_error['coverage_area'][] = [
'kelurahan'=>$row['kelurahan'],
'error'=>"Village atau District \"".$row['kelurahan']."\" not exist",
];
}
}
session(['import_error' => $import_error]);
session(['import_success' => $import_success]);
CoverageArea::upsert($data_insert,'id',['price','status']);
}
是的,数据可以导入、创建或更新到我的数据库mysql。。但当我看到at列在创建时和更新时,像这样更改它有任何问题
当我在不更新时间创建新数据时,以及当我在不更新时间更新更新数据时。。。为什么会这样?您的CoverageArea模型中有
$timestamps=false
吗?实际插入是通过DB::table('coverage\u area')->insert()方法完成的,我们对此一无所知。这是自制代码还是某个著名的框架?