db-seeder
db-seeder copied to clipboard
Junction Table relation
Hi, how can I create seeder for relation with junction table?
CREATE TABLE `video` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
PRIMARY KEY (`id`),
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
CREATE TABLE `tag` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
PRIMARY KEY (`id`),
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
CREATE TABLE `tag_video` (
`tag_id` int(11) NOT NULL,
`video_id` int(11) NOT NULL,
PRIMARY KEY (`tag_id`,`video_id`),
KEY `idx-tag_video-tag_id` (`tag_id`),
KEY `idx-tag_video-video_id` (`video_id`),
CONSTRAINT `fk-tag_video-tag_id` FOREIGN KEY (`tag_id`) REFERENCES `tag` (`id`) ON DELETE CASCADE,
CONSTRAINT `fk-tag_video-video_id` FOREIGN KEY (`video_id`) REFERENCES `video` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
I've tried:
$seeder->table('tag')->data([
[1, 'PHP'],
[2, 'POO'],
[3, 'Java'],
[5, 'Javascript']
], ['id', 'name'])->rowQuantity(5);
$seeder->table('video')->columns([
'id',
'name'=> $faker->sentence(6),
])->rowQuantity(50);
$seeder->table('tag_video')->columns([
'tag_id' => [Generator::RELATION, 'tag', 'id'],
'video_id' => [Generator::RELATION, 'video', 'id'],
]);
But I'm getting duplicated entry for N - N for 'PRIMARY'
@desenvolvedorindie I have generated dummy data for related table. Check this http://www.smarttutorials.net/seedpopulate-mysql-database-dummytest-data-using-php-db-seeder/