laravel - 无法通过 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);
});
解决方案
$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);
});
推荐阅读
- html - 在 div 中添加 target="_blank" 属性是什么意思?
- css - PrimeFaces 6.2 网格 CSS 示例
- xml - 如何在 XSLT 中从 XML 中的递归内部节点获取数据
- android - PackageInstaller 返回 INSTALL_FAILED_INTERNAL_ERROR:权限被拒绝
- php - 每个请求在 Laravel 中创建不同的会话
- jquery - 如何将手风琴功能与主体分开?
- python - 如何将 Tensorflow 数据集保存到 csv?
- excel - 基于句号将行合并为一个
- java - 根据不同的id开头从数据库更改密码
- angular - 从谷歌地图 api Javascript 中删除按钮