Laravel Eloquent 查询 - 计数限制()

Laravel Eloquent Query - limit on a count()

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

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

但我无法通过 eloquent 执行此操作。这是我到目前为止尝试过的....

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

...但这不起作用。它不会对限制进行子查询,因此限制变得无用。

如果没有 运行 受限的子查询,查询时间将延长 10 倍.....恐怕它不会像我需要的那样可扩展。

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

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

我最终确实想出了一个解决方案,我只是没有 post 它(直到现在)。你可以直接抓取第50条记录的ID看是否存在:

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

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

当 table.

中有大量记录时,这 count()