Как заказать результаты отношения 1 ко многим - PullRequest
1 голос
/ 18 ноября 2011

Я использую Propel 1.5.7 и не могу понять, как правильно заказать результаты вызова get[Related]s().

например,

Скажем, у Author есть много Books:

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

И книги имеют столбец PublishDate.

Как мне отсортировать $books по PublishDate?Могу ли я передать что-то getBooks(), чтобы это произошло.Я не могу найти упоминания об этом в документации.

Ответы [ 2 ]

2 голосов
/ 18 ноября 2011

Насколько мне известно, это единственный способ сортировки книг Лео по дате публикации.

Однако вы можете сделать его красивее, используя класс BookQuery для создания ваших критериев (поскольку BookQuery косвенно является критерием):

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

Используя этот метод, вы также сможете использовать методы, определенные в вашем классе BookQuery, и, давайте представим, только получить пять книг Лео, опубликованных данным автором.

$criteria = BookQuery::create()
    ->filterByGenre('Fiction');
    ->limit(5);
    ->orderByPublishDate();
$books = $leo->getBooks($criteria);
0 голосов
/ 18 ноября 2011

Мне не нравится этот ответ, но он сработал.

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

Создайте новый Criteria, добавьте заказ и передайте его get[Related]s().

...