如何使用Doctrine从多对多关系表中检索数据

时间:2011-11-25 07:24:57

标签: doctrine symfony-1.4

假设我有3个表:BookAuthorBookAuthor

  
      
  • Bookidname
  •   
  • Authoridname
  •   
  • BookAuthoridbook _ id,author _ id
  •   

我想查找作者的所有书籍,我知道author_id。任何人都可以通过Doctrine Query Language告诉我如何执行此操作吗?

1 个答案:

答案 0 :(得分:3)

我认为有几种方法:

<强> 1

行动中:

 $this->books= Doctrine::getTable('BookAuthor')->getBookAuthor($author_id);

模特:

  public function getBookAuthor($author_id)
        {
            $q = $this->createQuery('a')
                       ->Where('a.author_id=?',$author_id)
                       ->addORDERBY ('created_at DESC');

        return $q->execute();
        }

<强> 2

例如,某些时候您在书籍表中有一些参数,例如书籍可以是活动的。

行动中:

 $this->books= Doctrine::getTable('Book')->getBookAuthor($author_id);

模特:

 public function getBookAuthor($author_id)
        {
            $q = $this->createQuery('a')
                       ->andWhere('a.active=1')
                       ->leftJoin('a.BookAuthor o')
                       ->andWhere('o.author_id=?',$author_id)
                       ->addORDERBY ('created_at DESC');


    return $q->execute();
    }