如何订购1对多关系的结果

时间:2011-11-17 20:08:57

标签: orm propel

我正在使用Propel 1.5.7,无法找出订购get[Related]s()电话结果的正确方法。

e.g。

说,Author有很多Books

 $leo = AuthorQuery::create()->findByLastName("Tolstoy");
 $books = $leo->getBooks();

而且,图书有PublishDate列。

如何按$books排序PublishDate?我可以将某些内容传递给getBooks()以实现此目的。我在文档中找不到任何提及。

2 个答案:

答案 0 :(得分:2)

据我所知,这是按出版日期排序狮子座书籍的唯一方法。

然而,您可以通过使用BookQuery类创建标准来使其更漂亮(因为BookQuery间接是一个标准):

$criteria = BookQuery::create()->orderByPublishDate();
$books = $leo->getBooks($criteria);

使用此方法,您还可以使用BookQuery类中定义的方法,让我们想象一下,只能检索给定作者发布的五本leo书籍。

$criteria = BookQuery::create()
    ->filterByGenre('Fiction');
    ->limit(5);
    ->orderByPublishDate();
$books = $leo->getBooks($criteria);

答案 1 :(得分:0)

我对这个答案不满意,但确实有效。

$c = new Criteria();
$c->addAscendingOrderByColumn(BookPeer::PUBLISH_DATE);
$books = $leo->getBooks($c);

创建新的Criteria,添加订单并将其传递给get[Related]s()