当我用数据更新我的表时,找到了两个额外的字段,我没有在我的桌子上添加。让我用详细信息显示我的代码。
迁移表inquiry_plan详细信息:
public function up()
{
Schema::create('inquiry_plan', function (Blueprint $table) {
$table->increments('id');
$table->unsignedInteger('inquiry_id');
$table->string('title_vacation');
$table->string('email');
$table->string('phone_no', 20)->nullable();
$table->dateTime('start_date')->nullable();
$table->dateTime('end_date')->nullable();
$table->foreign('inquiry_id')->references('id')->on('inquiry_master');
});
}
在我的planController上添加了一个添加活动的函数:
这是我的控制器功能
public function addactivity(Request $request) {
try {
$validator = Validator::make($request->all(), Inquiryplan::planRules(), Inquiryplan::PlanMessages());
$plandetails = Inquiryplan::SaveOrUpdate($request);
if($plandetails !== false) {
return redirect()->route('plan')->with('success', trans('Plan details added successfully.!!'));
} else {
return back()->with('error', "Unable to save plan details.!!")->withInput();
}
} catch (\Exception $ex) {
dd($ex);
return back()->with('error', "Unable to save plan details.!!")->withInput()->withErrors($validator);
}
}
最后在我的模型中保存了更新函数。
这是我的模特函数
public static function SaveOrUpdate(Request $request) {
try {
$id = $request->get('id', false);
$plandetails = false;
DB::transaction(function () use ($request, &$plandetails, $id) {
$plandetails = $id ? Inquiryplan::findOrFail($id) : new Inquiryplan();
$plandetails->fill($request->all());
try {
$plandetails->save();
} catch (\Exception $ex) {
throw $ex;
}
dd($ex);
});
return $plandetails;
} catch (\Exception $ex) {
throw $ex;
}
}
当我提交表单时,它会返回错误
“SQLSTATE [42S22]:未找到列:1054'字段列表'中的未知列'updated_at'(SQL:插入
inquiry_plan
(inquiry_id
,title_vacation
,{{1 }},phone_no
,start_date
,end_date
,updated_at
)值(0,测试标题,9974031835,2018-02-06,2018-02-14,2018- 02-06 10:44:45,2018-02-06 10:44:45))
问题是什么?
答案 0 :(得分:2)
您可以将此字段添加到迁移文件并重新启动迁移:
$table->timestamps();
所有代码:
public function up()
{
Schema::create('inquiry_plan', function (Blueprint $table) {
$table->increments('id');
$table->unsignedInteger('inquiry_id');
$table->string('title_vacation');
$table->string('email');
$table->string('phone_no', 20)->nullable();
$table->dateTime('start_date')->nullable();
$table->dateTime('end_date')->nullable();
$table->timestamps();
$table->foreign('inquiry_id')->references('id')->on('inquiry_master');
});
}
或只需将public $timestamps = false;
放入您的模型中。
答案 1 :(得分:0)
在您的模型Inquiryplan
中,添加以下行:
public $timestamps = false;
答案 2 :(得分:0)
默认情况下,Eloquent需要
created_at
和updated_at
列 存在于你的桌子上。
因此您需要在迁移文件中添加此项
$table->timestamps();
或者如果您不想要时间戳,请将其添加到模型文件public $timestamps = false;