所以我有这条宁静的路线public function edit(Request $request, customer_user $user, $id)
我已经改变了编辑控制器方法,如下所示:
Missing argument 3 for App\Http\Controllers\UserController::edit()
有了这个,我得到customer_user
$id = null
是一个模型。
但如果我在控制器方法中添加dd($id)
,我会得到所需的结果。
但是,如果我这样做了
http://x/3/edit
,网址为dd($user->take(1)->first())
,表示" null"并没有给我这个号码。
但是我的模型r=10^8
c=5
A=matrix(runif(r*c,0,1),r,c)
B=matrix(runif(r*c,0,1),r,c)
在网址中显示了正确的模型!?
我对此感到困惑,无法找到有类似问题的人。
提前致谢
答案 0 :(得分:1)
你这里不需要$ id
public function edit(Request $request, customer_user $user, $id)
为什么? - 当你使用Route::resource('user', 'UserController');
laravel创建路由时,其中一个是/user/{user}/edit
和GET方法,这里是一个占位符。默认情况下,当您创建资源控制器时,编辑方法就像这样public function edit($id)
,并且$ id的值是从传递为{user}
的任何内容中设置的
但是在您的编辑方法edit(Request $request, customer_user $user, $id)
- *调用方法时,除非参数保持默认值
,否则必须给出所有参数- 当您的网址为
http://x/3/edit
时,laravel会将请求作为第一个参数值传递
- 然后它找到
设置第二个参数的值customer_user
模型,但它的值为3,因此它使用customer_user::find(3)
- 然后$ id param和laravel没有任何要分配的内容,所以错误来了,但是当你设置
$id=null
这是默认值,这样你就不会收到任何错误
- 现在让我们以
edit
方式修改您的public function edit(Request $request, Category $user, $id)
方法,假设您拥有Category
模型,现在访问相同的网址并检查dd($user->take(1)->first())
您会找到类别信息而不是customer_user!