【问题标题】:Method Illuminate\Database\Eloquent\Collection::delete does not exist方法 Illuminate\Database\Eloquent\Collection::delete 不存在
【发布时间】:2021-10-17 12:04:40
【问题描述】:

我正在使用 Laravel 5.8,在这个项目中,我想从数据库中的一个表中删除一些数据,所以我在 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'));
    }

但是一旦我运行它,我就会收到以下错误消息:

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

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

【问题讨论】:

    标签: php laravel laravel-5.8 laravel-collection


    【解决方案1】:

    您正在使用返回集合的get() 方法,然后尝试在collection 上调用delete() 方法。 而不是该方法调用如下删除方法

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

    如果是一条记录,那么

    $subscriptions = UserWalletTransaction::where('wallet_id', $wallet->id)->first();
    
     if($subscribe){
           $subscribe->delete();
    }
    

    【讨论】:

      猜你喜欢
      • 2020-11-21
      • 2021-09-08
      • 2020-11-13
      • 2019-12-11
      • 2020-02-04
      • 2019-11-12
      • 2019-05-24
      • 2019-09-04
      • 1970-01-01
      相关资源
      最近更新 更多