Laravel 5 MongoDB Library从特定日期获取记录

时间:2015-05-05 20:18:00

标签: mongodb laravel laravel-5

我正在使用https://github.com/jenssegers/laravel-mongodb库来处理mongodb,如何查询属于特定月份的记录?或今天的记录?

1 个答案:

答案 0 :(得分:2)

laravel中有一个非常好的日期处理包,名为 Carbon ,您可以将其与查询一起使用。如果您想根据mongodb日期时间字段whereBetween查询特定月份(例如2015年4月)之间的记录,可以尝试使用 created_at

$users = User::whereBetween('created_at', array(Carbon::createFromDate(2015, 4, 1), Carbon::createFromDate(2015, 4, 30)))->get();

同样,要获取今天的记录,请使用Carbon的 startOfDay() 属性:

$dt = Carbon::now()->startOfDay();
$users = User::where('created_at', '>', $dt)->get();

另一种方法是使用 Eloquent ,它允许您使用Carbon / DateTime对象而不是MongoDate对象。示例受到 docs

的启发
<?php

use Jenssegers\Mongodb\Model as Eloquent;

class User extends Eloquent {

    use SoftDeletingTrait;

    /**
     * Collection for Model
     *
     * @var String
     */
    protected $collection = "users";

    /**
     * Connection for model
     *
     * @var type
     */
    protected $connection = 'mongodb';

    protected $dates = array('created_at');
}

允许您执行以下查询:

$users = User::where('created_at', '>', new DateTime('-1 day'))->get();

或者原生使用MongoDate对象,您可以尝试

$start = new MongoDate(strtotime("2015-04-01 00:00:00"));
$stop = new MongoDate(strtotime("2015-04-30 00:00:00"));

$users = DB::collection('users')->whereBetween('created_at', array($start, $stop))->get();