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

Doctrine 如何使用条令从多对多关系表中检索数据,doctrine,symfony-1.4,Doctrine,Symfony 1.4,假设我有3个表:Book、Author和BookAuthor Book有id,name 作者拥有id,姓名 BookAuthor拥有id,book\u id,author\u id 我想找到一位作者的所有书籍,我知道author\u id。谁能告诉我如何使用条令查询语言?我认为有几种方法: 1 在行动中: $this->books= Doctrine::getTable('BookAuthor')->getBookAuthor($author_id); $this->

假设我有3个表:
Book
Author
BookAuthor

  • Book
    id
    name
  • 作者
    拥有
    id
    姓名
  • BookAuthor
    拥有
    id
    book
    \u id,
    author
    \u id

我想找到一位作者的所有书籍,我知道
author\u id
。谁能告诉我如何使用
条令查询语言

我认为有几种方法:

1

在行动中:

 $this->books= Doctrine::getTable('BookAuthor')->getBookAuthor($author_id);
 $this->books= Doctrine::getTable('Book')->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();
        }
 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();
    }
2

例如,有时您在book表中有一些参数,例如book可以是活动的,也可以不是活动的

在行动中:

 $this->books= Doctrine::getTable('BookAuthor')->getBookAuthor($author_id);
 $this->books= Doctrine::getTable('Book')->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();
        }
 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();
    }

我认为有几种方法:

1

在行动中:

 $this->books= Doctrine::getTable('BookAuthor')->getBookAuthor($author_id);
 $this->books= Doctrine::getTable('Book')->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();
        }
 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();
    }
2

例如,有时您在book表中有一些参数,例如book可以是活动的,也可以不是活动的

在行动中:

 $this->books= Doctrine::getTable('BookAuthor')->getBookAuthor($author_id);
 $this->books= Doctrine::getTable('Book')->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();
        }
 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();
    }