我试图向
users.destroy
发出删除请求,我确保 ids
数组返回至少包含一个元素的数组,当发出请求时,我从 laravel 收到错误:count(): Argument #1 ($value) must be of type Countable|array, string given
Users/Index.vue
const deleteSelectedUsers = () => {
const ids = [];
selectedUsers.value.forEach((val) => {
ids.push(val.id);
});
router.delete(
route("users.destroy", {
user: ids,
})
);
deleteUsers.value = false;
selectedUsers.value = null;
toast.add({
severity: "success",
summary: "Successful",
detail: "Users Deleted",
life: 3000,
});
};
UserController.php
public function destroy(Request $request)
{
try {
DB::table('users')->whereIn('id', $request->user)->delete();
} catch (Throwable $e) {
dd($e);
}
}
而且
query builder
语句无论如何也不起作用,我尝试给它一个固定数组,但它没有删除具有指定 id
的任何行:
$delete = DB::table('users')->whereIn('id', [5,27])->delete();
问题似乎是由控制器中不存在
$request->user
引起的,因为我可以通过使用whereIn
执行null
来重新创建相同的错误:
DB::table('users')->whereIn('id', null)->delete();
我假设 Laravel 会忽略 HTTP DELETE 请求中的请求正文,因此
$request->user
为 null。
如果您从 HTTP DELETE 更改为 HTTP POST 并执行完全相同的代码将修复,那么这就是问题所在。