我正在 Laravel 10.48.8 中开发一个电子商务项目,我的 PHP 版本是 8.2.12。
我在删除级联中使用外键使用一对多关系将父表类别链接到子表产品之一。
我使用类别资源控制器来定义 CRUD 操作。
问题:在销毁函数中,我试图确定如果该特定类别中存在产品,则无法删除该类别。但是,它也不会让我删除不包含任何产品的其他类别。以下是我编写的函数: 附: ‘category_id’是我的产品表中的一列,它是用于链接类别表中主键的外键。
public function destroy(string $id)
{
$category=Category::findOrFail($id);
$product = Product::with('category')->first();
if(!$product->category_id)
{
if(File::exists($category->image))
{
File::delete($category->image);
}
$category->delete();
return redirect()->route('category.index')->with('success','Category deleted successfully');
}
else
{
return redirect()->route('category.index')->with('message','Cannot delete Categories with existing products!');
}
}
我已经成功解决了这个问题。
我变了
if(!$product->category_id)
到
if($product->category_id!=$category->id)
并且成功了。