2016-05-03 15 views
5

にnullで私はここで、Laravel 5でcreated_atフィールドタイムスタンプ(updated_atの、のcreated_at)はLaravel 5

updated_atに問題がある、私の移行です:

Schema::create('lots', function (Blueprint $table) { 
    $table->increments('id'); 
    $table->integer('lot'); 
    $table->integer('is_active'); 
    $table->timestamps(); 
}); 

しかし、私はいくつかを挿入updated_atおよびcreated_atフィールドはnullです。現在のタイムスタンプで自動補完するにはどうすればよいですか?

私はこのようなデータを挿入します。

\DB::table('admin_lots')->insert([ 
    'lot' => $request->cycle_lot, 
    'is_active' => '1', 
]); 

感謝を。

+0

データを挿入する方法を教えてください。 –

答えて

2

おそらくデータを挿入するときにEloquentを使用しないでしょう。この場合は、タイムスタンプを手動で追加する必要があります。

あなたがこれを行うにはしたくないが、あなたはまだ満たされたタイムスタンプを必要とする場合は、use this hack

\DB::table('admin_lots')->insert([ 
       'lot' => $request->cycle_lot, 
       'is_active'  => '1', 
       'created_at' = \Carbon\Carbon::now()->toDateTimeString(), 
       'updated_at' = \Carbon\Carbon::now()->toDateTimeString() 
      ]); 

$table->timestamp('created_at')->default(\DB::raw('CURRENT_TIMESTAMP')); 
$table->timestamp('updated_at')->default(\DB::raw('CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP')); 

更新あなたの更新されたコードに基づいて

、ここでは別のソリューションです

+0

データを挿入する方法に関する記事を更新しました。あなたの答えをありがとう、今それを試してみましょう。 –

+0

コードに基づいた手動のタイムスタンプ作成用の別のソリューションを追加しました。 –

+1

正直言って雄弁のユースケースのようです。この場合、ストレートdbインサートは悪い習慣です。 – overburn

4

直接データを入力すると、Laravelはタイムスタンプについて知りません。 insertステートメントでタイムスタンプを手動で設定することもできますし、Eloquentモデルを使用することもできます。これはタイムスタンプを含め、多くのことを自由に処理します。また、該当する場合はストレートクエリよりも維持管理が簡単です。あなたはタイムスタンプが自動的にデータベースに書き込ま作るためにLaravelの素晴らしい雄弁機能を使用する必要が

Eloquent ORM

+2

この場合、Eloquentの使用をお勧めします。他のものは、不必要に困難で維持可能な非ララベル・ウェイ・コードとなる。 –

0

...

としてあなたの例雄弁な意志のためのコードを見ることで、このように書きます:

$lot_inputs = array(
    'lot' => $request->cycle_lot, 
    'is_active' => 1 
); 
$new_lot = Lot::create($lot_inputs); 

Eloquentのメソッドとそのプロパティを簡単に使用できるように、テーブル= 'lots'のモデルを持っていることに注意してください。

Eloquent ORMを可能な限り使用すると素晴らしいでしょう。将来的にDB技術を変更したい場合は、再度叙述的な熟語を指定する必要はありません(例:クエリを別のDBに変換する言語はEloquentによって自動的に行われます)

ありがとう、私はあなたの問題を解決するのに役立ちます。

2

モデルにこの行があるかどうかを確認してください。

public $timestamps = false; 

それが持っている場合は、それを削除します。

関連する問題