直接在 Factory 中设计 user_id 的填充,我觉得更容易理解一些?
StatusFactory.php
<?php
use Faker\Generator as Faker;
$factory->define(App\Models\Status::class, function (Faker $faker) {
$date_time = $faker->date . ' ' . $faker->time;
return [
'content' => $faker->text(),
'created_at' => $date_time,
'updated_at' => $date_time,
'user_id' => $faker->randomElement([1,2,3]),
];
});
StatusesTableSeeder.php
<?php
use Illuminate\Database\Seeder;
use App\Models\User;
use App\Models\Status;
class StatusesTableSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
$statuses = factory(Status::class)->times(100)->make();
Status::insert($statuses->toArray());
}
}
你这样只是随机取值
1,2,3
,但是不合理啊。你怎么知道用户id
就只有这三个呢,你应该从user
表中pluck('user_id')
,从这个结果中获取才对我觉得你这个方法更好
@小龙 原书上也是这么做的,只是一个示例,不用太较真
是比较好理解
@hustnzj 这个方法更好
作者的那个例子中可以多学一个小知识,就是匿名函数中如何使用 use,可以多思考一下啦