Laravel API - 如果产品被订购,试图禁止管理员删除产品

问题描述

正如标题所说,我正在尝试确定该产品是否未订购,否则管理员可以删除该产品。它似乎有效,但我认为我没有以正确的方式处理它,因为控制台返回错误 500。

这是我在ProductController中的销毁函数

public function destroy(Product $product)
{
    $ordersLink = $product->orders()->where('orders.product_id',$product->id)->exists();

    if(!$ordersLink) {
        $status = $product->delete();
    } 

    return response()->json([
        'status' => $status,'message' => $status ? 'Product removed' : 'Product not removed'
    ]); 
}

无法删除产品时会抛出错误,但应返回“产品未删除”。

任何帮助将不胜感激!干杯

解决方法

用以下代码替换代码:

public function destroy(Product $product)
{
    $status = false;
    $ordersLink = $product->orders()->exists();

    if(!$ordersLink) {
        $status = $product->delete();
    } 

    return response()->json([
        'status' => $status,'message' => $status ? 'Product removed' : 'Product not removed'
    ]); 
}