Php Laravel刀片将数组传递给控制器,但控制器将其作为字符串读取

Php Laravel刀片将数组传递给控制器,但控制器将其作为字符串读取,php,laravel,Php,Laravel,这里是第一个控制器,它获取id大于1的所有用户的数据 //UserController $user = User::where('id','>',1)->get(); return view('user.index', compact('user')); 在索引视图中,它有一个按钮,可以将用户的数据生成报告 //index.blade.php <form method="GET" action="/users/{{$user}}/generate

这里是第一个控制器,它获取id大于1的所有用户的数据

//UserController
$user = User::where('id','>',1)->get();
return view('user.index', compact('user'));
在索引视图中,它有一个按钮,可以将用户的数据生成报告

//index.blade.php
<form method="GET" action="/users/{{$user}}/generate">
    <button class="btn btn-primary">Generate User Report</button>
</form>

您不能在
querystring
中传递数组,因为
querystring
是一个字符串

如果要通过表单传递数组,必须使用
POST
方法和如下隐藏元素:

//index.blade.php
<form method="POST" action="/users/generate">
    @foreach ($users as $user)
        <input type="hidden" name="users[]" value="{{ $user->id }}" />
    @endforeach
    <button class="btn btn-primary">Generate User Report</button>
</form>

我猜你是误解了询问。您无法在querystring中传递数组,因为从其名称可以看出,数组是一个字符串。为什么不在其自己的控制器中执行like/users/generate并执行select user?
//index.blade.php
<form method="POST" action="/users/generate">
    @foreach ($users as $user)
        <input type="hidden" name="users[]" value="{{ $user->id }}" />
    @endforeach
    <button class="btn btn-primary">Generate User Report</button>
</form>
$usersId = $requst->input('users', []);