【发布时间】:2019-08-18 17:15:35
【问题描述】:
我想要的是当用户访问此链接时/api/bonus?provider[]=MyCompany
结果将仅显示 providers=[MyCompany] 提供的奖金。
在我的控制器中:
public function all(Request $request)
{
$size = $request->input('size');
$bonus = Bonus::with('category', 'bonus');
$bonus = Filterer::apply($request, $size, $bonus);
$bonus = Filterer::apply($request, $size, $bonus);
return response()->json([
'code' => 0,
'success' => true,
'data' => BonusResource::collection($bonus),
}
我的预期结果是获得所有等于 [MyCompany] 的提供者
但不知何故,这个查询不起作用。
过滤器
public static function apply(Request $filters, $size, $bonus)
{
if ($filters->has('provider')) {
$bonus->whereHas('bonus', function ($query) use ($filters) {
$query->whereIn('providers', $filters->input('provider',[]));
});
}
return $bonus->paginate($size);
}
但最后我得到了这个结果。数据为空[]。
我想知道为什么我无法获取数据。我做错了哪一部分?
【问题讨论】:
-
如果您需要更多信息,请告诉我
-
剩下的代码是什么?因为在那里,您似乎忘记了最终的
get()或count()获取数据的方法 -
提供者在任何时候都只是一个提供者吗?即我的公司?如果是这样,您可以通过比较
where('provider', $singleCompany)或类似内容来简化查询。另外 - 建议您将函数内的奖励更改为不同的变量,如$query,因为它可能会重叠。最后,正如@bjovanov 所说,您有一个查询但还没有集合,因为您没有调用 final 方法从数据库中获取集合。使用get()获取所有奖励版本。也许在您的问题上添加更多信息,了解您需要什么(一家公司、多家等)。 -
你的控制器函数没有返回任何东西。
-
@Watercayman 是的,我有几个提供者的名称,我已经将变量更改为
$query,但仍然无法得到结果
标签: php mysql laravel laravel-5 eloquent