symfony 1.4:如何从关系表中获取记录

时间:2012-08-29 07:55:06

标签: orm symfony1 doctrine symfony-1.4

如何从“多”表记录中获取对象?

我有rsObjectComments的列表,我需要抓取rsObjects

例如:

的schema.yml:

rsObject:
  actAs:
    Timestampable: ~ 
    Sluggable:
      fields: [name]
  columns:
    name: { type: string(255), notnull: true, unique: true }
    description:  { type: string(6000), notnull: true }
  relations:
    rsObjectComments:
     class:        rsObjectComments
     local:        id
     foreign:      rsobject_id
     type:         many
     foreignAlias: Comments

rsObjectComments:
  actAs:
    Timestampable: ~
  columns:
    rsobject_id: { type: integer, notnull: true }
    fromname: { type: string(100), notnull:true }
    fromemail: { type: string(100), notnull:true }
    comments: { type: string(1000), notnull:true }    
    is_public: { type: boolean, notnull: true, default: 1 }
  relations:
    rsObject: { onDelete: CASCADE, local: rsobject_id, foreign: id, foreignAlias: rsObjectCommentsAlias } 

1 个答案:

答案 0 :(得分:0)

我建议您阅读名为Inside The Model Layer (Doctrine)的整个文档页面(特别是检索相关记录部分)。

您将看到包含许多评论的文章的基本示例(与您的评论几乎相同)。

对于您的示例,如果您有rsObject,则可以使用以下方式获取相关的rsObjectComments

// will return a Doctrine_Collection
$rsObjectComments = $rsObject->getComments();

我正在使用getComments,因为您使用foreignAlias定义了Comments

如果你想要处理它们

foreach ($rsObject->getComments() as $comment)
{
  // $comment is a rsObjectComments object
}

以相反的顺序,如果您有评论并想要检索其文章。

$rsObject = $comment->getRsObject();