Doctrine 如何使用条令从多对多关系表中检索数据
假设我有3个表: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->
Book
、Author
和BookAuthor
有Book
,id
name
拥有作者
,id
姓名
拥有BookAuthor
,id
\u id,book
\u idauthor
我想找到一位作者的所有书籍,我知道
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();
}