方法 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();
}
我正在与 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();
}