laravel初心者です。
現在、ダミーデータを挿入するため、factory faker seederの勉強をしております。
親となるusersテーブルには50人のユーザーを作成し、その内5人の1日に歩いた歩数を管理するuser_walkingsテーブルを作成しました。
子となるuser_walkingsテーブルには
usersテーブルのuser_id
1日の歩数 walk_cnt
歩数を記録した日付 walk_date
上記3つのカラムがあり、歩数を記録した日付 walk_date にはランダムな日付で1人あたり7日分初期データとして挿入したいです。
php
1 2//UserWalkingTableSeeder.php 3<?php 4 5use App\Models\User; 6use App\Models\UserWalking; 7use Illuminate\Database\Seeder; 8use Illuminate\Support\Collection; 9use Carbon\Carbon; 10 11class UserWalkingTableSeeder extends Seeder 12{ 13 /** 14 * Run the database seeds. 15 * 16 * @return void 17 */ 18 public function run() 19 { 20 //usersテーブルのユーザーをランダムで5件取得 21 $users = User::inRandomOrder()->take(5)->get(); 22 $users->each(function ($user) { 23 Collection::times(7, function ($walk_date) use ($user) { 24 factory(UserWalking::class, 1)->create([ 25 'user_id' => $user->id, 26 'walk_date' => $walk_date //ここの正しい記述方法がわかりません 27 ]); 28 }); 29 }); 30 } 31}
php
1 2//UserWalkingFactory.php 3<?php 4 5use App\Models\UserWalking; 6use Faker\Generator as Faker; 7 8$factory->define(UserWalking::class, function (Faker $faker) { 9 return [ 10 'user_id' => random_int(1, 50), 11 'walk_cnt' => $faker->numberBetween(10, 10000), 12 'walk_date' => $faker->dateTimeBetween($startDate = 'now', $endDate = '+1 year'), 13 'created_at' => now(), 14 'updated_at' => now(), 15 ]; 16}); 17
##発生しているエラー
Illuminate\Database\QueryException : SQLSTATE[22007]: Invalid datetime format: 1292 Incorrect date value: '1' for column 'walk_date' at row 1
上記のエラーが調べても解決できません。
laravel初心者のため、仕組みがよく分からずどなたかご教授いただけないでしょうか、、
よろしくお願い致します。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2021/11/01 05:22