簡體   English   中英

Laravel屬性[文件名]在此集合實例上不存在

[英]Laravel property [filename] does not exist on this collection instance

當我編輯產品時,我也在嘗試編輯多個圖像,因此,如果我上載新圖像,則舊圖像應替換為新圖像,但現在如果我上載圖像,則會出現錯誤Property [filename] does not exist on this collection instance."並且不會刪除舊圖像,而是添加了新圖像。有相關的product和ProductsPhoto表,在ProductsPhoto表中有一個filename列和product_id列。如何替換舊的產品編輯時帶有新圖像的圖像?

我的代碼。

刀片模板

 <input multiple="multiple" name="photos[]" type="file"> 

調節器

 public function update(Request $request)
{
 $product = Product::with('ProductsPhoto')->find($request->product_id,'id');

  if ($request->hasFile('photos')){
        //Add the new photo
        foreach ($request->photos as $photo) {
            $filename = $photo->store('public/photos');
            ProductsPhoto::create([
                'product_id' => $product->id,
                'filename' => $filename
            ]);
        } 
        $oldFilename = $product->ProductsPhoto->filename;
        //Update the database
         $product->ProductsPhoto->filename = $filename;

         //Delete old photo
         Storage::delete($oldFilename);
    }

     $product->save();
  }

看來一個產品有很多 productsPhoto ,所以$product->ProductsPhoto是一個集合,而不是照片!

我不知道您的實體的定義方式,尤其是ProductProductPhoto類:但是您應該刪除productsPhoto的舊集合。

$product->productsPhoto()->delete();

並保存新的:

$newPhotos=[];
foreach ($request->photos as $photo) {
    $filename = $photo->store('public/photos');
    $newPhotos[] = new ProductsPhoto(['filename'=>$filename]);
} 
$product->productsPhoto()->saveMany($newPhotos);

而不是嘗試替換文件名

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM