簡體   English   中英

如何在laravel mongodb eloquent查詢中比較日期與mongodb iso日期?

[英]How to compare date with mongodb iso date in laravel mongodb eloquent query?

我希望從日期大於給定日期的數據中獲取記錄。 但是我在將日期與mongodb iso datetime進行比較時遇到了問題。

目前我以Ymd格式獲取日期,我想在查詢中比較, mongodb中的日期是2015-10-08T08:01:46.000Z格式。

Laravel的Eloquent支持Carbon / DateTime對象而不是MongoDate對象,當保存到數據庫時,它們將在內部轉換為MongoDate對象。 您可以在您的查詢中使用名為Carbon的 laravel中的此日期處理包。

例如,如果要查詢來自Users數據的記錄,其中mongodb datetime字段created_at大於給定日期,比如說今天的記錄,請使用Carbon的startOfDay()屬性:

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

同樣,要進行數據范圍查詢,即查詢特定月份之間的記錄,例如2015年10月,請使用whereBetween方法:

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

另一種方法是使用Eloquent ,它允許您使用Carbon / DateTime對象而不是MongoDate對象。 來自文檔的示例:

<?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-10-01 00:00:00"));
$stop = new MongoDate(strtotime("2015-10-31 00:00:00"));

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

比較日期的最簡單方法是使用Carbon

例如,如果你想從Ymd獲得,

你可以用這個:

$dt = Carbon::createFromDate(2017,11,7);

其中2017年=年,11 =月,7 =日。 根據您所需的日期更換它。

如果您想在當前時間之前獲取數據,可以使用

$dt = Carbon::now()

如果您想從當月的第一天開始獲取數據,您只需執行以下操作:

$dt = Carbon::now()->startOfMonth();

下面是我在代碼中使用的示例:

$device_data = DB::connection('mongodb')
->table('MyRecipe')
->where('data_date', '>', $dt)
->select('*')
->get();

我正在使用https://github.com/jenssegers/laravel-mongodb來訪問我的Mongo數據庫。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM