我有两个表格发布和图库,我已经创建了一个关系图库来发布表格。 我的要求是, 当用户上传内容时,它存储在帖子表(内容字段)中, 如果用户上传的图像是视频,我想将图像/视频名称存储在画廊表中,而图库ID则指向帖子表。我不知道该怎么做。请任何人帮助我?
发布表格
CREATE TABLE IF NOT EXISTS `post` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`user_id` bigint(20) unsigned NOT NULL,
`gallery_id` bigint(20) unsigned NOT NULL,
`content` longtext,
`photo` varchar(128) DEFAULT NULL,
`video` varchar(128) DEFAULT NULL,
`created` timestamp NULL DEFAULT NULL,
`updated` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
KEY `fk_forum_post_user` (`user_id`),
KEY `fk_forum_post_gallery` (`gallery_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=10 ;
ALTER TABLE `post`
ADD CONSTRAINT `fk_post_gallery` FOREIGN KEY (`gallery_id`) REFERENCES `gallery` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
图库表
CREATE TABLE IF NOT EXISTS `gallery` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`user_id` bigint(20) unsigned NOT NULL,
`type` int(11) NOT NULL DEFAULT '1' COMMENT '1- Photo, 2-Video, 3-Documents, 4-Unknown',
`profile_picture` varchar(50) DEFAULT NULL,
`forum_image` varchar(200) DEFAULT NULL,
`forum_video` varchar(200) DEFAULT NULL,
`forum_video_link` varchar(200) DEFAULT NULL,
`created` timestamp NULL DEFAULT NULL,
`updated` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
KEY `fk_gallery_user` (`user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=60 ;
是否有任何其他想法或我如何前进?
答案 0 :(得分:0)
您可以通过多种方式执行此任务。您可以在代码级别以及数据库级别上执行逻辑。但这是一个快速的答案。希望这可以帮到你
gallery_id
),因为用户可能有多个图片或视频用于单个帖子,或者用户可能不想上传任何图片/视频,在这种情况下,您的图片库ID将是空。我没有测试查询,所以这只是一个基本的想法
Select p.id, p.content, p.created, g.type, g.profilepicture, g.forum_image
from post p, gallery g, postgalleryrelation pgr
where p.id = pgr.postid
and g.id = pgr.galleryid
and p.id = 1
这只是一个想法。你可以做得更好。
答案 1 :(得分:0)
YII在使用relation
创建CRUD
时有gii
选项。为此,您必须创建具有外键关系的表。因此YII将自动在编码级别创建关系。在为两个表创建模型时,您必须选择Build Relation
选项。
查看Yii relation tutorials以获取更多信息