在我的Web应用程序中,用户可以上传documents或emails到channels。然后,频道可以具有document_tags和email_tags,所有上传的文档/电子邮件应自动继承。此外,document_tags与email_tags 将有不同的描述:tag_descriptions。因此,例如,如果我们有一个文档,该文档上载到具有以下标签的频道:animals (id = 1)和pets (id = 2)Document #55被赞扬为Channel #8。Document #55会自动继承具有的标签document_tags.channel_id = 55(可以通过以下关系进行访问:)$channel->documenttags。在这种情况下animals和pets。现在,用户应该能够为teganimals和pets中的设置唯一的描述tag_descriptions,例如:tag_descriptionsid | taggable_type | taggable_id | typeable_type | typeable_id | description1 | App\DocumentTag | 1 | App\Document | 55 | My unique description for animals. 2 | App\DocumentTag | 2 | App\Document | 55 | My unique description for pets.现在,在上面的数据库设计中,上载的document #55具有标签:animals和pets相关联,但是,这两个标签具有唯一的描述,对于特定文档而言是唯一的。如果我上传另一个文档或一封电子邮件(假设email #20),那么我可以想象它看起来像:tag_descriptions:id | taggable_type | taggable_id | typeable_type | typeable_id | description1 | App\DocumentTag | 1 | App\Document | 55 | My unique description for animals. 2 | App\DocumentTag | 2 | App\Document | 55 | My unique description for pets.3 | App\EmailTag | 1 | App\Email | 20 | Another unique description for animals. 4 | App\EmailTag | 2 | App\Email | 20 | Yet another unique description for pets.现在,它们email #20还具有animals和的标签pets,但是在这种情况下,用户可以为标签设置唯一的描述。现在我的问题是:上面的设计可行吗,并且在Laravel / PHP中被认为是最佳实践吗?我有点不确定如何构造代码,因为该TagDescription模型突然会具有两个多态关系(taggable和typeable),并且我在文档中找不到任何支持此关系的东西。此外,我不确定是否可以使用上述设计通过特定的上载文档访问唯一描述,例如://In my Document.php model:public function tagdescriptions(){ return $this->morphMany(TagDescription::class, 'typeable');}然后像这样使用它$document->tagdescriptions。最后但并非最不重要的一点-我有点不确定如何为特定的taggable_id / taggable_type和唯一的电子邮件/文档保存唯一的标签描述。(typeable_id和typeable_type)。
1 回答
- 1 回答
- 0 关注
- 113 浏览
添加回答
举报
0/150
提交
取消