首页 > 解决方案 > 无法通过 Controller 将变量传递到 Eloquent Query

问题描述

我正在尝试发出 ajax 请求以及请求的 url 中的变量。

该请求应该检索Recipes 的结果,Recipes 有一个Flavors 的数据透视表。

查询应检索具有指定风味的所有食谱。我无法将 $flavorID 变量传递到查询中。得到一个未定义的错误。

Route::get('/api/recipes/flavor/{flavorID}', function($flavorID){


    return App\Recipe::whereHas('flavors', function ($query) {

        $query->where('flavor_id', $flavorID);

    })->paginate(20);



});

标签: laraveleloquent

解决方案


$flavorID不存在于传递给的函数的范围内whereHas。使用use关键字将变量包含在函数的范围内。

Route::get('/api/recipes/flavor/{flavorID}', function($flavorID){
    return App\Recipe::whereHas('flavors', function ($query) use ($flavorID) {
        $query->where('flavor_id', $flavorID);
    })->paginate(20);
});

https://www.php.net/manual/en/functions.anonymous.php


推荐阅读