Laravel seeding results in Null timestamp
Auto timestamp saving is only for Eloquent feature so you need to do manually like below for non eloquent feature
DB::table('languages')->insert([ 'name' => 'English', 'flag' => '', 'abbr' => 'en', 'script' => 'Latn', 'native' => 'English', 'active' => '1', 'default' => '1', 'created_at' => Carbon::now()->format('Y-m-d H:i:s'), 'updated_at' => Carbon::now()->format('Y-m-d H:i:s')]);
OR do it eloquently(Like you have seen in auto generated seeds like UserTableSeeder)
$language = new Language(); $language ->name = 'English'; $language->flag' = '', $language ->abbr = 'en', $language->script ='Latn', $language->native ='English', $language->active ='1', $language->default ='1', $language->save();
Why to use carbon?Eloquent serves up Carbon for datetime and timestamp columns. By default it will serve up Carbon for the created_at, updated_at, and deleted_at columns. You can customize this in your models extending Eloquent\Model.
Carbon\Carbon extends \DateTime
, so there is no loss of functionality by using Carbon in favor of DateTime, only more benefit/flexibility.
In users table seeder do this for timestamp. It works for me..
use Carbon\Carbon; $faker = Factory::create(); $date = Carbon::now()->modify('-2 year'); $createdDate = clone($date); DB::table('users')->insert([ [ 'name' => "XYZ", 'slug' => "xyz", 'email' => "xyz@test.com", 'password' => bcrypt('secret'), 'bio' => $faker->text(rand(250, 300)), 'created_at' => $createdDate, 'updated_at' => $createdDate ],