Laravel Eloquent Query - 限制计数()

时间:2017-01-29 08:16:17

标签: mysql laravel eloquent laravel-eloquent

我需要知道一个表是否有超过50行符合某些条件。因此,原始查询应如下所示:

SELECT COUNT(id) FROM (SELECT id FROM table WHERE {conditions} LIMIT 50)

但是我很难通过雄辩的方式做到这一点。这是我到目前为止所尝试的......

card::where( ... )->limit(50)->count("id");

......但这不起作用。它没有使子查询达到极限,因此限制变得无用。

如果不运行有限的子查询,查询需要花费10倍的时间.....我担心它不会像我需要的那样具有可扩展性。

2 个答案:

答案 0 :(得分:0)

如果您只想计算列数,请使用不带参数的count()

$numberOfRows = Card::where(....)->take(50)->count();

答案 1 :(得分:0)

我最终确实提出了解决方案,但直到现在我还没有发布。您只需获取第50条记录的ID即可查看它是否存在:

$atLeastFifty = Card::offset(50)->value("id");

if(!empty($atLeastFifty)){
    // there are at least 50 records
}else{
    // there are less than 50 records
}

当表中有大量记录时,这比count()快。