我想将Product模型作为参数传递给ProductController,通常我是这样进行的:
php artisan make:model Model/Product -cr
然后laravel为我做魔术,但是现在我分别创建了模型和控制器。
我试图这样做:
/**
* Display the specified resource.
*
* @param App\Model\Product $product
* @return \Illuminate\Http\Response
*/
public function show(Request $request, Product $product)
{
return $product;
}
。
php artisan route:list
| GET|HEAD | products/{product} | products.show | App\Http\Controllers\ProductsController@show | api,jwt.auth |
。
路由器
Route::apiResource('/products', "ProductController");
。
请求
http://127.0.0.1/products/23?withsomequery=yes
没有错误:
-rw-r--r-- 1 www-data www-data 0 Sep 18 12:30 laravel-2019-09-18.log
。
以上所有代码均返回空数组,但我知道它应该返回某些内容。
我希望它返回类似:
{
id: 23
name: computer
created_at: 2019-02-02
updated_at: 2019-02-02
}
答案 0 :(得分:1)
首先检查产品型号是否位于顶部,例如
use App\Product;
还要确保产品ID 23在您的数据库中可用。
检查您的日志文件,看看它是否产生任何错误。
还有一件事,我注意到您创建了一个apiResource,如果它的api路由将/ api /添加到了端点。
通过php artisan route:list检查所有端点
答案 1 :(得分:1)
您应该获得与此路线相关的所有路线:
php artisan route:list
找到products.show
路线以检查是否应该在控制器中获得$ product并删除show()的Request $request
编辑:
Route::apiResource('/products', "ProductController")
->middleware('bindings');
绑定存在于kernel.php中:
'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,
答案 2 :(得分:1)
在编写路线时发生,不幸的是您添加了空格。
Route::get('/products/{product } ', "ProductController");
但是在这里,您使用的是apiResource并且没有显示任何空格。请仔细检查所有路由,
php artisan route::list
是否存在其他任何 product.show 名称路由。 在那之后得到这个
public function show($id)
{
$variable=Product::find($id);
}