【问题标题】:Laravel Seeding Relationship issueLaravel 播种关系问题
【发布时间】:2018-08-28 20:59:03
【问题描述】:

我想为插入到我的users 表中的每个数据将数据添加到administrators 表中。这里是UserFactory.php

$factory - > define(App\ User::class, function(Faker $faker) {
  return [
    'id' => $faker - > unique() - > isbn10,
    'email' => $faker - > unique() - > safeEmail,
    'password' => '$2y$10$TKh8H1.PfQx37YgCzwiKb.KjNyWgaHb9cbcoQgdIVFlYg7B77UdFm', // secret
    'remember_token' => str_random(10),
  ];
});

还有我的AdministratorFactory.php

$factory - > define(App\ Administrator::class, function(Faker $faker) {
  return [
    'prn' => $faker - > unique() - > isbn10,
    'rfid_number' => $faker - > unique() - > isbn10,
    'first_name' => $faker - > firstName,
    'middle_name' => $faker - > lastName,
    'last_name' => $faker - > lastName,
    'role_id' => 1
  ];
});

我有我的UsersTableSeeder.php:

public function run() {
  factory(App\ User::class, 50) - > create() - > each(function($user) {
    $user - > administrator() - > save(factory(App\ Administrator::class) - > make());
  });
}

每当我执行php artisan db:seed --class UsersTableSeeder 时,我的Administrator 表中的user_id 始终是0。我期待user_ididUser 表具有相同的User。它们都是一对一的关系。

【问题讨论】:

  • 你不需要把每一段示例代码都变成一个sn-p。如果是sn-p引擎无法运行的php代码,则更有理由。

标签: laravel factory relation laravel-eloquent


【解决方案1】:

尝试将管理员工厂的 user_id 覆盖为:

$user->administrator()->save(factory(App\ Administrator::class)->make(['user_id' => $user->id ]));

【讨论】:

  • 已解决。 Eloquent 假设主键是一个递增的整数值,这意味着默认情况下主键会自动转换为 int。
猜你喜欢
  • 2016-05-28
  • 1970-01-01
  • 2017-12-29
  • 2019-11-17
  • 2020-07-07
  • 2018-05-26
  • 2019-01-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多