У меня есть таблица UserCategoryFollows, в которой user_id
относится к пользователям и category_id
относится к категориям.
Пользователи могут следить за любым количеством категорий, но я не хочу вставлять несколько строк для одного и того же category_id
и user_id
.
Например, я не хочу это в моей базе данных:
user_id category_id
1 2
2 1
2 3
1 4
2 1 <---- Duplicate
1 2 <---- Duplicate
Это то, что я могу проверить внутри Модели или это проверка выполняется через контроллеры?
Я сейчас сею:
public function run()
{
$catCount = App\Category::count();
$faker = \Faker\Factory::create();
$follows = [];
for ($i = 0; $i < 100; $i++) {
$user_id = App\User::all()->random()->id;
$category_id = $faker->numberBetween(1, $catCount);
$follow = [
'user_id' => $user_id,
'category_id' => $category_id
];
array_push($follows, $follow);
}
foreach ($follows as $follow) {
App\UserCategoryFollow::create($follow);
}
}
Я мог бы изменить свой массив для удаления дубликатов, но я думаю, что было бы лучше обработать модель, если это возможно.