php – Laravel – 播种关系
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了php – Laravel – 播种关系,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1270字,纯文字阅读大概需要2分钟。
内容图文
![php – Laravel – 播种关系](/upload/InfoBanner/zyjiaocheng/710/ceb2fac5c6094336aa82a60d91a60aff.jpg)
在Laravel中,数据库种子通常通过模型工厂完成.因此,您使用Faker数据为模型定义蓝图,并说明您需要多少个实例:
$factory->define(App\User::class, function (Faker\Generator $faker) {
return [
'name' => $faker->name,
'email' => $faker->email,
'password' => bcrypt(str_random(10)),
'remember_token' => str_random(10),
];
});
$user = factory(App\User::class, 50)->create();
但是,假设您的用户模型与许多其他模型具有hasMany关系,例如Post模型:
Post:
id
name
body
user_id
因此,在这种情况下,您希望使用在Users表中播种的实际用户为Posts表添加种子.这似乎没有明确讨论,但我确实在Laravel文档中找到了以下内容:
$users = factory(App\User::class, 3)
->create()
->each(function($u) {
$u->posts()->save(factory(App\Post::class)->make());
});
因此,在您的用户工厂中,您为每个创建的用户创建X个帖子.但是,在一个大型应用程序中,可能有50-75个模型与用户模型共享关系,您的用户播种器实际上最终会将整个数据库与其所有关系一起播种.
我的问题是:这是处理这个问题的最佳方法吗?我能想到的唯一另一件事是首先播种用户(没有播种任何关系),然后在播种其他模型时根据需要从数据库中随机抽取用户.但是,如果它们需要是唯一的,您必须跟踪哪些用户已被使用.此外,这似乎会为播种过程添加大量额外的查询批量.
解决方法:
您也可以使用saveMany.例如:
factory(User::class, 10)->create()->each(function ($user) {
$user->posts()->saveMany(factory(Posts::class, 5)->make());
});
内容总结
以上是互联网集市为您收集整理的php – Laravel – 播种关系全部内容,希望文章能够帮你解决php – Laravel – 播种关系所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。