[英]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
是一個集合,而不是照片!
我不知道您的實體的定義方式,尤其是Product和ProductPhoto類:但是您應該刪除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.