php - 如何用有关系的模型播种
问题描述
我有User
和Activity
模型。User
hasMany关系到Activity
(和一个Activity
belongsTo only one User
):
在用户模型中:
public function activities() {
return $this->hasMany(Activity::class);
}
我想为用户提供相应的活动。我试过这个但没有奏效:
public function run()
{
factory(App\User::class, 5)->create()->each(function ($user) {
$user->activities()->saveMany(factory(App\Activity::class, 2)->make());
});
}
活动工厂:
$factory->define(App\Activity::class, function (Faker $faker) {
return [
'title' => $faker->text(50),
'description' => $faker->text(200)
];
});
我究竟做错了什么?
解决方案
试试这个方法:
数据库/工厂/ActivityFactory.php
$factory->define(App\Activity::class, function (Faker\Generator $faker) {
return [
'user_id' => factory('App\User')->create()->id,
'title' => $faker->text(50),
'description' => $faker->text(200),
];
});
数据库/种子/ActivitySeeder.php
public function run()
{
factory(App\Activity::class, 10)->create();
}
然后运行活动种子。
php artisan make:seeder ActivitySeeder
推荐阅读
- kendo-ui - 窗口中的简单 Kendo DropDownList 绑定
- google-apps-script - 每次运行脚本时如何增加脚本中引用的单元格?
- python - NameError:写入文件时未定义名称“write”
- java - 不支持的事件循环组类型:使用 pgjdbc-ng 的 NioEventLoopGroup
- templates - 在 Marketo 中更改模板后如何有效更新所有登陆页面?
- ruby-on-rails - 有没有办法防止每次实例化模型时都触发漂亮的打印宝石?
- node.js - npm 版本不匹配命令行与控制面板
- unity3d - 使用 Lean Touch 和 1 根手指旋转
- reactjs - 在一个形状上使用 onClick 事件来创建一个新形状
- github - 是什么导致 GitHub Push 在写入对象时挂起