如何将模型作为参数传递给控制器

我想将产品模型作为参数传递给 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工匠路线:列表


| 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

}


MM们
浏览 168回答 3
3回答

千万里不及你

您应该获得与该路线相关的所有路线:php artisan route:list并找到products.show路线来检查您是否应该在控制器中获取 $product 并删除Request $requestshow()编辑 :Route::apiResource('/products', "ProductController") ->middleware('bindings');绑定存在于 kernel.php 中:'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,

三国纷争

首先检查 Product 模型是否包含在顶部,例如use App\Product;还要确保产品 id 23 在您的数据库中可用。检查您的日志文件,看看它是否产生任何错误。还有一件事我注意到你创建了一个 apiResource 如果它的 api 路由添加 /api/ 到端点。通过 php artisan route:list 检查所有端点

陪伴而非守候

当您编写路线时会发生这种情况,不幸的是您添加了一个空格。Route::get('/products/{product } ', "ProductController");但是在这里您使用 apiResource 并且没有显示空间。请仔细检查所有路线,php artisan route::list是否存在任何其他单个product.show name 路由。当你在那之后得到这个public function show($id)     {        $variable=Product::find($id);     }
打开App,查看更多内容
随时随地看视频慕课网APP