我仍在学习 Web 开发、scala、play 2.0 和 squeryl 的所有来龙去脉,我正在尝试在我的两个表之间建立 ManyToMany 关系。
我查看了资料发现here但是我在中间表上遇到了麻烦。我已经查看了所有内容,但找不到一个很好的例子来说明它应该如何构建。
我在我的数据库中使用 MySQL,我尝试在中间表中使用外键和主键,但都没有用,或者我只是做错了。那么,有人可以给我一个中间表应该是什么样子的清晰示例吗?
再多说一点,我要关联的两个表的基本结构如下。
tableOne (
name varchar(255)
);
tableTwo (
name varchar(255),
idCode varchar(255)
);
它们将通过 tableOne 中的名称和 tableTwo 中的 idCode 相关联,这只是 tableTwo 名称列的缩写形式。
那么使用 MySQL、squeryl 和链接中显示的格式,任何人都可以帮助我实现这一目标吗?
最佳答案
要关联这两个表,您需要在您的架构中建立多对多关系。假设您已经在您的模式中使用名称 tableOne 和 tableTwo 定义了您的表,这样的东西可能是您想要的:
首先创建一个连接两个表的类:
class TableOneToTwo(
name:String = "",
idCode:String = "") extends KeyedEntity[CompositeKey2[String, String]] {
def id = compositeKey(name, idCode)
}
然后在你的 Schema 中映射关系
val tableOneToTwo = manyToManyRelation(tableOne, tableTwo).via[TableOneToTwo]((t1, t2, jt) => (t1.name === jt.name, t2.idCode === jt.idCode))
然后您只需要在您的数据库中创建相应的表 - 它应该有两个字段 - name
、id_code
(根据您的命名约定命名)。
如果您需要引用,这应该为您指明正确的方向:http://squeryl.org/relations.html
关于mysql - 如何在 MySQL 中为 Play 2 框架的 squeryl 中的 ManyToMany 关系设置中间表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14051190/