Как извлечь данные из множества таблиц отношений с помощью Doctrine - PullRequest
0 голосов
/ 25 ноября 2011

Допустим, у меня есть 3 таблицы: Book, Author и BookAuthor.

  • Book имеет id, name
  • Author имеет id, name
  • BookAuthor имеет id, book _id, author _id

Я хочу найти все книги автора, и я знаю author_id. Может кто-нибудь показать мне, как это сделать с Doctrine Query Language?

1 Ответ

3 голосов
/ 25 ноября 2011

Я думаю, что есть несколько способов:

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