0

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();

Buu とwith()組み合わせて多対多で使用することはできませんlimit()

そこで、joinWithwith simplejoinを変更して結果を呼び出してみpopulateRelation('UserTag')ましたが、Propel は次のように述べています。

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

User オブジェクトで populateRelation() を呼び出す方法があるかどうか教えてください。

4

1 に答える 1

0

joinWith を使用すると、制限を使用できない限り、with() とまったく同じことが行われます。

これらの列を結合するためにユーザー クエリを使用する必要はありません。あなたはただ行うことができます:

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

制限を使用する場合は、これらを制限付きで結合として実行し、後で populateRelation を実行します (joinWith を実行している場合、populateRelation は必要ありません。これら 2 つは冗長である必要があります)。

于 2013-01-04T01:42:54.927 に答える