我想在两件事之间创建多对多关系:备注和标签。但是,我想在代码中定义标签本身,而不是将它们放在数据库表中。
除了代表Note模型的notes
表之外,我希望有一个" pivot"表格(labels_notes
)包含两列:note_id
和label
。
所以,我的问题是:如何急切的加载,获取,设置和"通过标签获得笔记" Note模型的方法有效吗?
背景:在代码中而不是作为表的内容需要标签的主要原因是它们是一组固定的小值;不允许用户修改它们。此外,在某些标签周围的代码中可能需要特殊的逻辑。我考虑将它们存储在notes
的JSON列中,但是我担心在按标签搜索Notes时会对性能产生影响。
答案 0 :(得分:0)
我选择的解决方案是使用标准的传统Eloquent模型(包括专用数据库表),但通过迁移将所需的值注入其中,并使用字符串主键。这样我们就可以按照预期的方式使用Eloquent,而不是与之作斗争。
使用字符串主键意味着我们可以根据特定标签编写逻辑,而无需担心任意数字ID(即" id = news" vs" id = 12112")。请注意,这样做还需要在Label模型类中添加public $incrementing = false;
。
通过迁移注入必要的标签可以避免在部署时避免使用额外的设置任务,还可以避免将代码与外部进程耦合。