如何在Laravel 4中查询min(created_at)?

时间:2015-02-17 15:01:13

标签: php mysql laravel laravel-4

  • 我的数据库中有大约70个行/项。
  • 每天我插入10行,这样整周就会生成70行,然后旋转并删除最旧的行等等,直到我去...

  • 现在我想要显示它们,而不是全部,但只显示其中的10个,这是最新的!这是created_at的最小值。

如何编写where子句来查询?

Inventory::where(min(created_at))->get() //不起作用!

感谢。

1 个答案:

答案 0 :(得分:2)

这将为您提供最新的10行:

$result = Inventory::orderBy('created_at', 'desc')->take(10)->get();

这是最老的10行:

$result = Inventory::orderBy('created_at', 'asc')->take(10)->get();

要使用MIN(),您需要一个首先获得最低created_at的子查询,然后在where语句中使用该子查询。因为你知道你总是插入10行排序,限制是最简单的方法。

修改

如果您不能依赖每个日期的10行,则可以使用MIN,如下所示:

$result = Inventory::where('created_at', function($q){
   $q->selectRaw('MIN(created_at)')
     ->from('inventories');
})->get();