我需要获取所有文件,其中updated_at与今天或昨天的日期相同, 我怎么能这样做?
这是我目前的代码:
$yesterday = new DateTime('-1 days');
$yesterday = $fecha->format('Y-m-d');
$yesterday = new MongoDate(strtotime($yesterday.'00:00:00'));
$date=CampaignLog::where('campaign_id',$id)->where('updated_at','=', $yesterday)->get(array('data'));
答案 0 :(得分:0)
Laravel的Eloquent支持Carbon / DateTime对象而不是MongoDate对象,当保存到数据库时,它们将在内部转换为MongoDate对象。您可以在您的查询中使用名为 Carbon 的laravel中的此日期处理包。
例如,如果您要查询来自CampaignLog
数据的记录,其中mongodb日期时间字段updated_at
大于给定日期,例如昨天的记录,请使用Carbon的 {{3帮助方法:
$dt = Carbon::yesterday();
$campaigns = CampaignLog::where('updated_at', '>=', $dt)->get();
同样,要进行数据范围查询,即查询现在和昨天之间的记录,请使用 whereBetween
方法:
$campaigns = CampaignLog::whereBetween(
'updated_at', array(
Carbon::yesterday(),
Carbon::now()
)
)->get();
另一种方法是使用 yesterday()
,它允许您使用Carbon / DateTime对象而不是MongoDate对象。示例受到 Eloquent :
<?php
use Jenssegers\Mongodb\Model as Eloquent;
class CampaignLog extends Eloquent {
use SoftDeletingTrait;
/**
* Collection for Model
*
* @var String
*/
protected $collection = "campaignlogs";
/**
* Connection for model
*
* @var type
*/
protected $connection = 'mongodb';
protected $dates = array('updated_at');
}
允许您执行以下查询:
$campaigns = CampaignLog::where('updated_at', '>=', new DateTime('-1 day'))->get();
或者原生使用MongoDate对象,您可以尝试
$start = new MongoDate(strtotime("yesterday"));
$stop = new MongoDate();
$campaigns = DB::collection('campaignlog')->whereBetween('updated_at', array($start, $stop))->get();