Play 2.0 Complex join查询如何解析(Anorm)

时间:2012-10-24 17:54:13

标签: mysql database scala playframework-2.0 anorm

我正在使用play 2.0框架编写网站。解析结果时遇到问题。 这个对mysql db的请求获得了每集添加到数据库的所有链接(可以是每集几个)以及有关剧集和动画的所有信息。

  def lastReleasedLink(limit:Long=5):List[(((Episode,Anime),Link),Genre)] = {
    DB.withConnection { implicit c =>
      SQL(
        """
          select * from yas_episodes as a
          inner join anime as b on a.ep_anime_id=b.id
          left outer join yas_links as c on a.ep_id=c.ep_id
          LEFT JOIN yas_animes_genres AS d ON a.ep_anime_id = d.ag_anime_id
          INNER JOIN yas_genres AS e ON e.g_id = d.ag_genre_id
          where c.ep_id IS NOT NULL group by c.ep_id order by c.date desc limit {limit}
        """).on('limit ->limit)as(Episode.simple~Anime.simple~Link.simple~Genre.simple map{
        case episode~anime~link~genre => episode -> anime -> link -> Genre
      } *)
    }
  }

返回值是List[(((Episode,Anime),Link),Genre)]的类型 但是如何将输出形成到列表中 让我们说List[episode,anime,Seq[links]]List[episode,anime,Seq[Genres],Seq[links]]不知道在哪里放置类型。

你可以想象,如果每个剧集中有两个链接来自表格动画的信息,那么yas_episodes将被复制到每一行。所以我需要通过剧集记录以某种方式将它们叠加在一起(组)。然后就可以迭代列表并访问所有对象。

正如您所看到的,在请求中,动画与流派有多对多的关系。 我不知道如何将所有内容放在一个列表中以便能够在视图中访问它。流派应该成为动漫模型的一部分吗?

0 个答案:

没有答案