namespace Database\Seeders;
use Illuminate\Database\Seeder;
use App\Models\User;
use Illuminate\Support\Facades\DB;
class UsersTableSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
$users = User::factory()->times(50)->make();
$res = User::insert($users->makeVisible(['password', 'remember_token'])->toArray());
$user = User::find(1);
$user->name = 'Summer';
$user->email = 'summer@example.com';
$user->is_admin = true;
$user->save();
}
}
报错
Invalid datetime format: 1292 Incorrect datetime value: '2021-04-04T14:31:07.000000Z' for column 'created_at' at
原因: 新版本的laravel调用toArray
方法会使用新的时间戳格式,导致错误
解决: 在模型文件里加入一个方法,转一下时间格式
protected function serializeDate(\DateTimeInterface $date) {
return $date->format($this->dateFormat ?: 'Y-m-d H:i:s');
}
不保存时间
$users = User::factory()->times(50)->make();
调用 make
方法是不会保存时间的,可以 var_dump
打印一下原SQL语句看下。
解决:
$users = User::factory()->times(50)->make([
User::CREATED_AT => now(),
User::UPDATED_AT => now()
]);
make
方法可以传入一个数组去覆盖工厂类里面定义的数据,通过覆盖的方式手动插入时间