方法 Illuminate\Database\Eloquent\Collection::delete 不存在

Method Illuminate\Database\Eloquent\Collection::delete does not exist

我正在与 Laravel 5.8 合作,在这个项目中,我想从数据库中的 table 中删除一些数据,所以我在 Blade 中编写了这个:

<form action="{{ route('destroyWallet', $wallet->id) }}" method="POST">
@csrf
@method('DELETE')
<button type="submit" class="fa text-dark mr-2"> Delete </button>
</form>

这是路线 destroyWallet:

Route::delete('wallets/delete/{wallet}','Wallet\WalletController@destroy')->name('destroyWallet');

这是 WalletController 处的控制器 destroy 方法:

public function destroy(Request $request, Wallet $wallet)
    {
        $subscribe = UserWallet::where('wallet_id',$wallet->id)->get();
        $subscriptions = UserWalletTransaction::where('wallet_id', $wallet->id)->get();
        if($subscribe != NULL){
            $subscribe->delete();
        }
        if($subscriptions != NULL){
            $subscriptions->delete();
        }
        $wallet->delete();
        
        return redirect(url('admin/wallets/index'));
    }

但是一旦我 运行 收到此错误消息:

Method Illuminate\Database\Eloquent\Collection::delete does not exist.

那么这里出了什么问题?我该如何解决这个问题?

您正在使用 get() 方法,return 集合然后尝试调用 collection 上的 delete() 方法。 而不是像下面那样调用 delete 方法

$subscriptions = UserWalletTransaction::where('wallet_id', $wallet->id)->delete(); 

如果它是一条记录那么

$subscriptions = UserWalletTransaction::where('wallet_id', $wallet->id)->first();

 if($subscribe){
       $subscribe->delete();
}