如何在浮油中获取Joined外键对象?

时间:2014-04-13 23:27:59

标签: scala playframework-2.0 slick slick-2.0

我使用playframework2 + slick2.0

我的数据模型:

class Page(tag:Tag) extends Table[(Int,Int, String,String,String, Option[String], Option[String])](tag, "Page"){
  def id=column[Int]("ID", O.PrimaryKey)
  def subId=column[Int]("subject")
  def title=column[String]("Title", O.NotNull)
  def describe=column[String]("Describe")
  def profile=column[String]("Profile")
  def icon=column[Option[String]]("icon")
  def resId=column[String]("Picture")
  def * = (id, subId,title, describe, profile,icon, resId.?)
  def page_sub=foreignKey("PA_SU_FK", subId, subject)(_.id)
  def page_res=foreignKey("PA_RE_FK", resId, resource)(_.link)

}
    val page=TableQuery[Page]

class Resource(tag:Tag) extends Table[(String, String, Boolean)](tag, "Resource"){
  def link=column[String]("Link", O.PrimaryKey)
  def rtype=column[String]("class")
  def local=column[Boolean]("local")
  def * = (link, rtype,local)
}
val resource=TableQuery[Resource]

我想使用过滤器获取一行,并获取资源对象表单页面:

我的代码就像:

 val item=page.filter(_.id===id.toInt).first()(rs.dbSession)

这只是获取页面真实对象,我想获取对应的资源对象,如何通过过滤器获取它?

1 个答案:

答案 0 :(得分:1)

你可以使用for-comprehension:

 val pageWithResouce = (for {
   p <- page if (p.id === id.toInt)
   r <- resource if (p.resId === r.link)
  } yield { (p, r) })list