当我单击在控制器上调用Controller@delete
方法的删除按钮时,我收到错误。
调用未定义的方法Illuminate \ Database \ Query \ Builder :: destroy()
抛出新的BadMethodCallException(“调用未定义的方法{$ className} :: {$ method}()”);
破坏方法
public function destroy($id)
{
User::where('role', 'admin')->destroy($id);
return redirect('/home')->with('message', 'Deleted!');
}
::delete()
只能用于Illuminate\Database\Eloquent\Model
实例。当你使用where()
时,你会得到Illuminate\Database\Query\Builder
。这就是你收到错误的原因。使用->delete()
而不是->destroy()
,它会工作正常!
您只能使用密钥销毁现有模型。如果您想要过滤器,请改用delete。
laravel docs:
Deleting An Existing Model By Key
User::destroy(1);
User::destroy(array(1, 2, 3));
User::destroy(1, 2, 3);
Of course, you may also run a delete query on a set of models:
$affectedRows = User::where('votes', '>', 100)->delete();
首先从DB中找到记录,如:
$user = User::where('role', 'admin')->where('id', $id);
然后删除它,如:
$user->delete();
希望这能解决你的问题!!