2016-09-29 1 views
1

MongoDBを使用してLaravelモデルでcreated_atupdated_atプロパティにアクセスする際に問題があります。以下のように、データベース内の私の日付形式は次のとおりです。mongodbでlaravelのcreated_atとupdated_atの日付にアクセスできません

"created_at" : { 
    "sec" : NumberInt(1475126325), 
    "usec" : NumberInt(840000) 
}, 
"updated_at" : { 
    "sec" : NumberInt(1475126325), 
    "usec" : NumberInt(840000) 
}, 

私はMongoDBのクエリから次の結果を得る:

App\Modules\Admin\Models\Segment Object 
(
    [table:protected] => tbl_segment 
    [timestamps] => 1 
    [fillable:protected] => Array 
     (
      [0] => name 
      [1] => created_at 
      [2] => updated_at 
     ) 

    [collection:protected] => 
    [primaryKey:protected] => _id 
    [parentRelation:protected] => 
    [connection:protected] => 
    [keyType:protected] => int 
    [perPage:protected] => 15 
    [incrementing] => 1 
    [attributes:protected] => Array 
     (
      [_id] => MongoDB\BSON\ObjectID Object 
       (
        [oid] => 57ecbefe15285745ba039871 
       ) 

      [created_at] => Array 
       (
        [sec] => 1475133182 
        [usec] => 832000 
       ) 

      [updated_at] => Array 
       (
        [sec] => 1475133182 
        [usec] => 832000 
       ) 

     ) 

    [original:protected] => Array 
     (
      [_id] => MongoDB\BSON\ObjectID Object 
       (
        [oid] => 57ecbefe15285745ba039871 
       ) 

      [created_at] => Array 
       (
        [sec] => 1475133182 
        [usec] => 832000 
       ) 

      [updated_at] => Array 
       (
        [sec] => 1475133182 
        [usec] => 832000 
       ) 

     ) 

    [relations:protected] => Array 
     (
     ) 

    [hidden:protected] => Array 
     (
     ) 

    [visible:protected] => Array 
     (
     ) 

    [appends:protected] => Array 
     (
     ) 

    [guarded:protected] => Array 
     (
      [0] => * 
     ) 

    [dates:protected] => Array 
     (
     ) 

    [dateFormat:protected] => 
    [casts:protected] => Array 
     (
     ) 

    [touches:protected] => Array 
     (
     ) 

    [observables:protected] => Array 
     (
     ) 

    [with:protected] => Array 
     (
     ) 

    [morphClass:protected] => 
    [exists] => 1 
    [wasRecentlyCreated] => 
) 

私はcreated_at日付にアクセスしようとすると、私は次のエラーを取得:

ErrorException in Model.php line 2983: preg_match() expects parameter 2 to be string, array given

答えて

0

mongodbのlaravelパッケージ(jessengers)を更新した後、同様の問題が発生しました。試してみることができます - 次の行を検索

01 Model.phpで
if (preg_match('/^(\d{4})-(\d{1,2})-(\d{1,2})$/', $value)) { 

vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php で発見し、vendor/nesbot/carbon/src/Carbon/Carbon.php

if (preg_match('/^(\d{4})-(\d{1,2})-(\d{1,2})$/', $value['sec'])) { 

でそれを置き換えるとcreateFromFormat()機能を置き換える -

public static function createFromFormat($format, $time, $tz = null) 
    { 
     $time = date('Y-m-d H:i:s' , $time['sec']); 

     if ($tz !== null) { 
      $dt = parent::createFromFormat($format, $time, static::safeCreateDateTimeZone($tz)); 
     } else { 
      $dt = parent::createFromFormat($format, $time); 
     } 

     if ($dt instanceof DateTime) { 
      return static::instance($dt); 
     } 

     $errors = static::getLastErrors(); 
     throw new InvalidArgumentException(implode(PHP_EOL, $errors['errors'])); 
    } 

注: -これにはもっと良い解決策があるかもしれません。誰かがその代替案を見つけたら、分かち合いましょう。

関連する問題