【问题标题】:How do I access the fields of a link-table with Lift Mapper?如何使用 Lift Mapper 访问链接表的字段?
【发布时间】:2012-10-19 01:31:55
【问题描述】:

从下面的 Lift-Web Mapper 模型,我如何访问 AssignmentformLink 下的字段?

object TForm extends TForm with LongKeyedMetaMapper[TForm]

class TForm extends LongKeyedMapper[TForm] with IdPK with ManyToMany {
  def getSingleton = TForm

  object label extends MappedString(this, 40)

  object pattern extends MappedString(this, 200)

  object assignments extends MappedManyToMany(
      AssignmentformLink, AssignmentformLink.assignment, AssignmentformLink.form, TForm)

}

object AssignmentformLink extends AssignmentformLink with LongKeyedMetaMapper[AssignmentformLink] {
  override def dbIndexes = Index(form, assignment) :: super.dbIndexes
}

class AssignmentformLink extends LongKeyedMapper[AssignmentformLink] with IdPK {
  def getSingleton = AssignmentformLink

  object form extends MappedLongForeignKey(this, TForm)

  object assignment extends MappedLongForeignKey(this, Assignment)

  object order extends MappedInt(this)

  object readonly extends MappedBoolean(this)

  object required extends MappedBoolean(this)

  object visible extends MappedBoolean(this)

}

object Assignment extends Assignment with LongKeyedMetaMapper[Assignment]

class Assignment extends LongKeyedMapper[Assignment] with IdPK with ManyToMany {
  def getSingleton = Assignment

  object id_parent extends MappedLong(this)

  object label extends MappedString(this, 40)

  object order extends MappedInt(this)

  object guard extends MappedString(this, 200)

  object forms extends MappedManyToMany(
      AssignmentformLink, AssignmentformLink.assignment, AssignmentformLink.form, TForm)

}

要获得一个assignmet和与之链接的表格,您可以这样做:

val assignments = Assignments.find(By(Assignment.id, 123))

assignments match {
  case Full(as) => {
    val forms = as.forms
.....

但我不知道如何导航到AssignmentformLink 下的order, readonly, required... 字段。

我意识到我可以手动搜索链接,即。 AssignmentformLink.find(By(form...),By(assignment...)),但这会导致代码效率低下,真的错过了使用对象的重点。

我需要能够导航从表单到链接表的字段。

【问题讨论】:

  • 我从来不需要这样做,也不确定是否有方便的方法,但我使用了这样一个事实,即您可以在可以传递给@的查询参数中引用连接表987654326@——例如,OrderBy(AssignmentformLink.order, Ascending)
  • 您当然也可以使用查询参数在Assignment 中创建readOnlyFormsrequiredForms 等对象。我知道,这不是你想要的,但可能会让你接近你想要做的事情。
  • 感谢@TravisBrown 的建议。非常感谢您的意见。

标签: scala lift


【解决方案1】:

不知道这是否是正确的方法,但assignments.joins 返回一个连接表记录的列表。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-20
    • 1970-01-01
    • 2014-04-03
    • 2018-11-18
    • 2015-01-05
    • 1970-01-01
    相关资源
    最近更新 更多