【问题标题】:Laravel limit query param resultsLaravel 限制查询参数结果
【发布时间】:2020-05-07 16:18:03
【问题描述】:

我有一个查询,它根据用户的输入过滤电影,我需要添加一个 limit 作为查询参数,这样它就限制了返回的电影数量,我如何添加这个,我我是编写雄辩的查询的新手。

查询

$films = Film
::when($request->input('first'), function ($query, $first) {
    $query->whereHas('options', function ($query) use ($first) {
        $query->where('first', $main);
    });
})
->when($request->input('second'), function ($query, $second) {
    $query->whereHas('options', function ($query) use ($second) {
        $query->where('second', $second );
    });
})
->when($request->input('age'), function ($query, $age) {
    $query->whereHas('ageRatings', function ($query) use ($age) {
        $query->where('age', $age);
    });
})
->when($request->input('country'), function ($query, $country) {
    $query->whereHas('locations', function ($query) use ($country) {
        $query->where('country', $country);
    });
})
->when($request->input('city'), function ($query, $city) {
    $query->whereHas('locations', function ($query) use ($city) {
        $query->where('city', $city);
    });
})
->get();

【问题讨论】:

标签: laravel eloquent


【解决方案1】:

您可以使用$query->limit(5)$query->take(5)

如果您想跳过前 5 个结果,请使用 $query->skip(5)

如果要添加分页,可以使用$query->paginate(5)

查看更多:Query Builder

【讨论】:

  • 谢谢 url 看起来像这样然后/films?limit=5
  • 这与url无关。您需要更新您的 url 或手动从 url 获取值
【解决方案2】:

这两种方法都可以使用

限制方法

$limit = 10;
$films = Film
::when($request->input('first'), function ($query, $first) {
    $query->whereHas('options', function ($query) use ($first) {
        $query->where('first', $first);
    });
})
->when($request->input('second'), function ($query, $second) {
    $query->whereHas(‘options', function ($query) use ($second) {
        $query->where('second', $second);
    });
})
->when($request->input('age'), function ($query, $age) {
    $query->whereHas('ageRatings', function ($query) use ($age) {
        $query->where('age', $age);
    });
})
->when($request->input('country'), function ($query, $country) {
    $query->whereHas('locations', function ($query) use ($country) {
        $query->where('country', $country);
    });
})
->when($request->input('city'), function ($query, $city) {
    $query->whereHas('locations', function ($query) use ($city) {
        $query->where('city', $city);
    });
})
->limit($limit)
->get();

采取方法

$limit = 10;
    $films = Film
    ::when($request->input('first'), function ($query, $first) {
        $query->whereHas('options', function ($query) use ($first) {
            $query->where('first', $first);
        });
    })
    ->when($request->input('second'), function ($query, $second) {
        $query->whereHas('options', function ($query) use ($second) {
            $query->where('second', $second);
        });
    })
    ->when($request->input('age'), function ($query, $age) {
        $query->whereHas('ageRatings', function ($query) use ($age) {
            $query->where('age', $age);
        });
    })
    ->when($request->input('country'), function ($query, $country) {
        $query->whereHas('locations', function ($query) use ($country) {
            $query->where('country', $country);
        });
    })
    ->when($request->input('city'), function ($query, $city) {
        $query->whereHas('locations', function ($query) use ($city) {
            $query->where('city', $city);
        });
    })
    ->take($limit)
    ->get();

【讨论】:

  • 谢谢 url 看起来像这样然后/films?limit=10
  • get the value of limit in url 你的意思是你提供的这个解决方案会返回上面的 url 还是我需要别的东西
  • 不,它没有,你必须先在你的 url 中获取 limit 的值,然后在执行查询之前将其初始化为一个变量
  • 顺便说一句,关于如何获得要通过的限制值有两种选择,请访问本文5balloons.info/…
猜你喜欢
  • 2011-09-28
  • 1970-01-01
  • 1970-01-01
  • 2014-08-04
  • 2016-04-01
  • 2011-01-17
  • 2020-10-07
  • 2013-06-22
  • 1970-01-01
相关资源
最近更新 更多