1

我正在尝试在控制器中更新我的模板详细信息。但目前,我的代码不起作用。它不会更新字段。无论如何,如果我添加 $template->save()。它将更新的记录保存为新记录。如何使我当前的代码工作?为什么我会面临这种情况?请有人向我解释并更正我的代码,我仍在学习 Laravel。提前致谢。

TemplateController 中的更新函数

public function update(Request $request, $id)
    {
        if(! lara_club_has_permission('edit-template') ){
            return view('403');
        }

        $this->validate($request, [
                'title'=>'required',
                'start_date'=> 'required',
                'end_date'=>'required',
                'template_content'=>'required',
            ]
        );

        //check status response
        if(isset($request->status)&&$request->status=='on'){
            $status='1';
        }else{
            $status="0";
        } 

        $template=new Template();

        $template->title=$request->title;
        $template->start_date=convert_to_sql_date_format($request->start_date);
        $template->end_date=convert_to_sql_date_format($request->end_date);
        $template->is_active=$status;
        $template->template_content=$request->template_content;

        $input = $request->all();

        $template->update($input);

        $name = $input['title'];

        return redirect()->route('templates.index')->with('success', 'Template <b>'. $name.'</b> Updated!');
    }
4

3 回答 3

1

在我的情况下,我在方法名称中指定表名,如下所示。

public function update(Request $request, Template $id)
{
    $id->title=$request->title;
    $id->start_date=convert_to_sql_date_format($request->start_date);
    $id->end_date=convert_to_sql_date_format($request->end_date);
    $id->is_active=$status;
    $id->template_content=$request->template_content;

    $input = $request->all();

    $id->update($input);
}
于 2020-02-14T07:32:34.543 回答
1

您应该使用 Laravelfind方法,而不是声明它的新实例。

它应该是

$template=Template::find($id);

不是

$template=new Template();
于 2020-02-14T05:06:25.797 回答
1

您创建了新对象$template=new Template(); ,但需要更新现有对象,因此请尝试以下代码

        $template=Template::find($id);
        //or use $template=Template::where('id',$id)->first();

        $template->title=$request->title;
        $template->start_date=convert_to_sql_date_format($request->start_date);
        $template->end_date=convert_to_sql_date_format($request->end_date);
        $template->is_active=$status;
        $template->template_content=$request->template_content;

        $input = $request->all();

        $template->update($input);
于 2020-02-14T04:55:22.630 回答