首页 > 解决方案 > 路由功能不起作用,但不知何故关闭 拉拉维尔 7

问题描述

我的路由有问题,我快吓坏了。在我的 API 路由文件中:

Route::post('/role-user/attach/{user}', 'RoleUserController@attach')->name('role.user.attach');

这是我的控制器:

public function attach(User $user)
{ 
    $user->assignRole($this->roles);
    return response('',200);
}

我在测试中按名称向路由发出 post 请求:(也尝试过路径)

public function roles_can_be_attached_to_a_user()
{
    $user = factory(\App\User::class)->create();
    $roles = factory(\App\Role::class,5)->create();

    $this->post(route('role.user.attach', ['user' => $user]), ['roles' => $roles]);

    $this->assertTrue($user->Roles->contains($roles->first()));
    $this->assertCount(5, $user->Roles);
}

然后它给了我一个错误,例如:

PDOException: SQLSTATE[HY000]: General error: 25 column index out of range

有趣的是,当我将代码从控制器移动到 API 路由文件作为闭包时:

Route::post('/role-user/attach/{user}', function(App\User $user) {
    $user->assignRole($this->roles);
    return response('',200);
})->name('role.user.attach');

然后它亮绿灯没有任何问题。我错过了什么?我挣扎了大约 2 个小时,我什至不知道如何用谷歌搜索它。如果是因为sqlite,那么它也应该在关闭时发出红灯,对吗?另外,我的控制器应该在主控制器目录中。提前致谢!

标签: laravelsqlitetestingroutingcontroller

解决方案


推荐阅读