У меня есть стол users
в отношениях один-много с таблицей под названием videos
, Я хочу заполнить две таблицы без потери целостности данных. Вот что я сделал ниже:
$factory->define(App\User::class, function (Faker\Generator $faker) {
return [
'name' => $faker->name,
'email' => $faker->email,
'username' => $faker->unique()->userName
];
});
$factory->define(App\Video::class, function(Faker\Generator $faker){
$user = factory(App\User::class)->create();
return [
'title' => $faker->city,
'link' => $faker->domainName,
'user_id' => $user->id,
'description' => $faker->sentence(40)
];
});
Так что теперь все, что мне нужно сделать, это создать VideoTableSeeder
и запустить сумму, которую я хочу. Я чувствую, что способ, которым я обращаюсь с этим, не достаточно хорош, поэтому я хотел бы знать, как лучше я могу это сделать. Особенно, я хочу, чтобы видео было больше, чем пользователи, а не одинаковое количество, в том, что я сделал, все они будут одинаковыми.
Оформить документацию в разделе Добавление отношений к моделям
Добавление отношений к моделям
Вы можете даже сохранить несколько моделей в базе данных. В этом примере
мы даже прикрепим отношение к созданным моделям. При использовании
создать метод для создания нескольких моделей, коллекция Eloquent
экземпляр возвращается, что позволяет использовать любой из
функции, предоставляемые коллекцией, такие как каждый:
$users = factory(App\User::class, 3)
->create()
->each(function($u) {
$u->posts()->save(factory(App\Post::class)->make());
});
Других решений пока нет …