在检索关系时是否可以添加WHERE子句?

时间:2010-07-06 23:19:45

标签: doctrine limit where relationships

在doctrine中,是否可以在获取与关系对应的对象的属性时添加WHERE子句?

就概念而言,假设我只想检索过去5天内发布的前3篇博文。我的“博客”对象有一个“posts”属性,它被定义为一种关系。

...更新

有些人在理解我所说的关系时遇到了一些困难:

class Blog extends Doctrine_Record {

       ...

       public function setUp() {

            $this->hasMany("Note as Posts", array(
                "local" => "blog_name",
                "foreign" => "post_id",
                "refClass" => "BlogPost"
            ));

       }
}

正如您所看到的,这是一种由学说支持的明确关系。当我使用它查询时:

     $instanceOfBlog->Posts...........

我想知道我当时是否可以添加其他条款。

1 个答案:

答案 0 :(得分:3)

我不确定是否会关注你,但如果这是我在BlogTable课程中的想法:

public function getRecentPosts()
{
  $qry = self::createQuery("b")
    ->innerJoin("b.Posts p")
    ->where("p.created_at > ?", date("Y-m-d H:i:s", strtotime("-5 days")))
    ->orderBy("p.created_at DESC")
    ->limit(3);

  $results = $qry->execute();
}

那是你的追求吗?这基于Posts对象中的created_at字段,并假设在BlogPosts表之间定义了关系。

我可能完全误解了你的问题: - )