Laravel:在我的表上添加数据时找到“updated_at”和“created_at”字段

时间:2018-02-06 10:53:59

标签: laravel laravel-5.5

当我用数据更新我的表时,找到了两个额外的字段,我没有在我的桌子上添加。让我用详细信息显示我的代码。

迁移表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_planinquiry_idtitle_vacation,{{1 }},phone_nostart_dateend_dateupdated_at)值(0,测试标题,9974031835,2018-02-06,2018-02-14,2018- 02-06 10:44:45,2018-02-06 10:44:45))

问题是什么?

3 个答案:

答案 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_atupdated_at列   存在于你的桌子上。

因此您需要在迁移文件中添加此项 $table->timestamps(); 或者如果您不想要时间戳,请将其添加到模型文件public $timestamps = false;