我想要的是,当用户访问此链接时 /api/bonus?provider[]=MyCompany
结果将仅显示 providers=[MyCompany] 提供的奖金。
在我的 Controller 中:
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
、first
(取决于您是想获取多行还是仅获取第一行).现在你只准备应该执行的查询但你永远不会执行它,所以你应该改变行:
$bonus = Filterer::apply($request, $size, $bonus);
进入
$bonus = Filterer::apply($request, $size, $bonus);
$bonus = $bonus->get();
执行查询并获取结果。
关于php - 无法使用 laravel Eloquent 地获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57546754/