【问题标题】:Laravel 5 seeders: how to use autoincrement field from one seeder in another?Laravel 5 播种机:如何在另一个播种机中使用自动增量字段?
【发布时间】:2015-02-10 05:28:36
【问题描述】:

示例:我有 2 个模型:BookAuthor。每本书只有一位作者。
Book id 是一个自动增量键。

所以我必须使用 2 个播种机:BookTableSeederAuthorTableSeeder。它们属于不同的类别:BookTableSeederAuthorTableSeeder

所以我首先播种books,然后播种authors。 如果图书使用作者 ID,我如何为图书播种?

【问题讨论】:

  • 将数据播种在一起,这将允许您使用 id 并将它们关联在一起。或者种子作者首先是他们的书。或者只是从逻辑上考虑,没有作者,一本书永远不会存在。
  • @MattBurrow 这只是一个例子。实际上,所有模型(几乎)都是相关的。这是否意味着所有种子都应该在一个文件中?
  • 如果数据相关是。但是,如果您想在单独的类中播种,最好的方法是自己手动输入 ID。记住播种主要用于填充应用程序的虚拟数据或初始数据。
  • 在你的书播种器中你可以有类似$authors = Author::lists('id')的东西,现在你可以用$faker->randomElement($authors)或类似的东西在普通的php中播种author_id。如果您需要先播种书籍,可以将 $faker 部分替换为 mt_rand(1,50)

标签: php laravel database-migration seeding laravel-5


【解决方案1】:

在作者之前播种书籍是没有意义的,因为书籍需要作者。

您可以在 BookTable Seeder 上尝试类似的操作,先创建作者,然后再创建书籍:

$book->author = Author::where('name', 'Shakespeare')->first();

此外,每个作者只有一本书是没有意义的

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-09-05
    • 2023-01-12
    • 2022-11-27
    • 2016-10-18
    • 2018-01-23
    • 2015-04-13
    • 2017-12-08
    相关资源
    最近更新 更多