0

我试图更新一个公告,但它给了我

SQLSTATE 错误 [42S22]:未找到列:1054 字段列表中的未知“0”字段(SQL:更新 annonces 集图像 = 配置文件/cbIhz3sDKQKQLuK51OjTVadgpI5BxZpX5cUhMHKB.jpeg,图像 =?,0 = 出售的猫63,1 = Lorem 63 ipsum dolor sit amet, consectetur adipisicing elit. Ipsum temporibus iusto ipsa, asperiores voluptas unde aspernatur praesentium in? Aliquam, dolore !, 2 = 206231 , 3 = profile / cbIhz3sDKQKQLuK51OjTVadgpI5BxZpX5cUhMHKB.jpeg,4 =?2, Annonces.updateat 07:58,其中 id = 553)。

知道该announces表不包含字段 0,但它包含我不想更新的其他字段 dd ($ request-> all ()) 很好地显示了 annn 的数据在 edit.blade 中显示得很好。 AnnoncesController.php

 public function update(Request $request, $id)
    {

        $request->validate([
        'titre'      => ['bail','required', 'string','min:3'],
        'image'     =>  ['bail','required','max:2048'],
        'images.*'  =>  ['bail','required','max:2048'], 
     ]); 
        $annonce=Annonce::find($id);
        if($request->hasFile('image'))
       {
        $path = $request->image->store('profiles');
        $imagee = $request->image->store('storage');
        $request->image = $path;
        }
        $annonce->update([
            $annonce->titre       = $request->titre,
            $annonce->description = $request->description,
            $annonce->prix        = $request->prix,
            $annonce->image       = $request->image,
            $annonce->images      = $request->images
        ]);
        session()->flash('success', 'annonce updated successfully !!');
       return redirect('annonces'); 
    }
4

1 回答 1

1

$annonce->titre = $request->titre不是创建关联数组以在update.

您需要以下内容:

 $annonce->update([
   'titre'       => $request->titre,
   'description' => $request->description,
   'prix'        => $request->prix,
   'image'       => $request->image,
   'images'      => $request->images
]);

写起来可能更短:

$annonce->update($request->only([ 'titre', 'description', 'prix', 'image', 'images' ]));

如果您适当地使用$fillable模型中的属性来指定可以批量分配的属性,您还可以使用:

$annonce->update($request->all());

但是这里有一个问题,有人可能会填写一个一般可填写的属性,但您不想填写用户已完成的特定表格,因此不进行验证。如果您要验证所有可填写的字段,那么这是安全的。

于 2020-11-11T09:41:18.923 回答