如何解决Laravel软件包绑定的奇怪行为-存在模型并设置绑定时出现ModelNotFoundException
我最近开始在Laravel Phpunit中测试用于图书管理的新api,但是当我想使用已创建图书的id更新图书时,
$this->actingAs($user = factory(User::class)->create(),'api');
$user->givePermissionTo('manage books');
$this->postJson('api/v1/books',$this->validData());
$book = Book::first();
$response = $this->putJson('api/v1/books/1',$this->validData())
我收到此错误
No query results for model [Custom\Book\Models\Book] 1,abcde,9788055646916,255,long_description,short_description,2020-11-11T22:46:00.000000Z,2020-11-11T22:46:00.000000Z
当我把不存在的模型的ID放到那里时,我得到了一些不同的消息
No query results for model [Custom\Book\Models\Book] 2
主要我不理解,为什么当我仅插入id时,它试图绑定整个对象。
用于书本管理的模型,控制器和路由位于自定义程序包中,并且路由具有api中间件设置。
我的控制器方法:
public function update(UpdateBookFormRequest $request,Book $book)
{
dump('kniha');
dd($book);
return (new BookService())->update($book,$request->validated());
}
我的路线
Route::resource('books',BookController::class)->only('store','update','destroy')->middleware('can:manage books');
我的路线服务提供商:
public function registerRoutes(Router $router)
{
$router->group(['namespace' => $this->namespace,'prefix' => 'api','middleware' => 'api'],function ($router) {
require __DIR__ . '/../routes.php';
});
}
更让人奇怪的是,当我调用show方法时
$this->getJson('api/v1/books/1');
对不起,我的英语。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。