Symfony 1.4& Propel 1.6:populateRelation()在相关的表上逐一进行

时间:2012-12-16 07:38:48

标签: php join symfony-1.4 propel

我喜欢populateRelation的工作方式,但在这种特殊情况下,我真的很高兴了!

架构非常简单:

event
  id
  title
  user_id
user
  id
  name
user_tag
  id
  tag
user_tag_rel
  user_id
  tag_id

现在,我需要做的是使用相关用户和标签获取10个事件。

第一个选项是:

EventQuery::create()
  ->joinWithUser()
  ->useUserQuery()
    ->joinWithUserTag()
  ->endUse()
  ->limit(10)
  ->find();

with()一起使用多对多时,不可能使用limit()

所以我尝试使用简单joinWith更改join并在结果上调用populateRelation('UserTag'),但Propel说:

"Calling getRelation() on an unknown relation, UserTag"

有人可以告诉我是否有办法在User对象上调用populateRelation()?

1 个答案:

答案 0 :(得分:0)

使用joinWith与()完全相同,只要不能使用限制。

您无需使用用户查询来加入这些列。你可以这样做:

EventQuery::create()
    ->joinWithUser(Event.User)
    ->joinWithUserTag(User.UserTag)
    ->find();

如果你想使用限制,那么使用Limit作为join,然后运行populateRelation(如果你正在使用joinWith,你不应该需要populateRelation,因为这两个应该是多余的)