1

我希望这在 Doctrine2 中是可能的。我知道 Propel 会自动执行此操作。我想做的是:

我有两张桌子:

workflow (id, name)
inbox (id, workflow_id, name)

和两个实体:

Workflow and Inbox

在我的收件箱实体中,我当然有这个(关联两个表):

  /**
   * @ORM\ManyToOne(targetEntity="Workflow")
   * @ORM\JoinColumn(nullable=false)
   */
  protected $workflow;

一切都很好。但是,我希望能够从与该工作流关联的工作流实体中获取收件箱。我找不到怎么做。

Propel 做的很简单,你只需要这样做:

$workflow = WorkflowQuery::create()
  ->filterById(1)
  ->findOne(1);

$inboxes = $workflow->getInboxs() 
//Propel just addes 's' to methods that return associations

如何,在 Doctrine2 中可以做到这一点?像这样的东西:

$workflow = $this->getRepository('MyBundle:Workflow')->findById(1);
$inboxes = $workflow->getInboxes();

那么,有没有办法做到这一点?谢谢你。

4

1 回答 1

2

控制器变化:

$workflow = $this->getDoctrine()->getRepository('MyBundle:Workflow')->find(1);
$inboxes = $workflow->getInboxes();

别忘了你需要

// Workflow entity
public function __construct()
{
    // make `use` statement for this, not long
    $this->inboxes = new \Doctrine\Common\Collections\ArrayCollection() ;
}

/**
* @ORM\OneToMany(targetEntity="Inbox", mappedBy="workflow", cascade={"persist"})
*/
protected $inboxes ;
public function getInboxes() { return $this->inboxes ; }
// setInboxes(), addInbox(), removeInbox() here
于 2013-06-06T13:12:02.080 回答