Vue InertiaJS Laravel - 删除请求不起作用

问题描述 投票:0回答:1

我试图向

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();

laravel vue.js request inertiajs
1个回答
0
投票

问题似乎是由控制器中不存在

$request->user
引起的,因为我可以通过使用
whereIn
执行
null
来重新创建相同的错误:

DB::table('users')->whereIn('id', null)->delete();

我假设 Laravel 会忽略 HTTP DELETE 请求中的请求正文,因此

$request->user
为 null。

如果您从 HTTP DELETE 更改为 HTTP POST 并执行完全相同的代码将修复,那么这就是问题所在。

© www.soinside.com 2019 - 2024. All rights reserved.