2017-11-14 18 views
0

MySQL 5.7テーブルからdatetime(6)フィールドを取得する際に問題が発生しました。 私は、MySQLクライアントから直接それを実行した場合、それは動作します:Laravel 5.5 - Eloquent - "datetime(6)"フィールドのあるMySQLテーブルから "マイクロ秒"を取得する

mysql> SELECT arrival from table1 limit 1; 
+----------------------------+ 
| arrival     | 
+----------------------------+ 
| 2016-06-22 16:52:06.260000 | 
+----------------------------+ 
1 row in set (0.00 sec) 

mysql> 

が、雄弁を使用してLaravelからフィールドを取得し、マイクロ秒が報告されていません。

class Table1Model extends Model 
{ 
    protected $table = 'table1'; 
} 

class Table1Controller extends Controller 
{ 
    public function index() 
    { 
     $data = Table1Model::first()->arrival; 
     dd($data); 
    } 
} 

// the output is: "2016-06-22 16:52:06" 

これは雄弁な問題ですか?どのようにマイクロ秒を得る?

ありがとうございます。

+0

てみてください'とカーボンがそれを正しくピックアップするかどうかを見てください。 – apokryfos

+0

@apokryfosありがとうございますが、これは動作しません。出力は同じです... – vlauciani

+0

[このバグレポート](https://bugs.php.net/bug.php?id=54648)が適切です。 PDOは部分的なdatetimesをサポートしていないようです。ケースは解決したようですが、解決されたバージョンがわかりません。[この回答](https://stackoverflow.com/a/31930762/487813)は回避策があるかもしれません – apokryfos

答えて

0

ありがとう@apokryfos、true ...これはバグです。

私はRAWクエリ使用して簡単な回避策が見つかりました:(あなたも他の2を持っていると仮定) `保護$日付= [ "到着"、 "のcreated_at"、 "updated_atのを"]追加

class Table1Model extends Model 
{ 
    protected $table = 'table1'; 
} 

class Table1Controller extends Controller 
{ 
    public function index() 
    { 
     $query = Table1Model::select(
      DB::raw(
        CONVERT(CAST(arrival AS DATETIME(3)), CHAR) 
      ) 
     ); 
     $data = $query->get(); 
     dd($data); 
    } 
} 
// the output is: "2016-06-22 16:52:06.260" 
関連する問題