我们假设我有一个名为article
的数据库表,每篇文章都分配了type
(1 =标准文章,2 =赞助文章等)。
使用Propel 2,是否可以执行以下操作?
步骤1:选择type = 1
的10篇最新文章(有序降序)(这不是一件容易的事)。
$articles = ArticleQuery::create()
->filterByType(1)
->orderByPublishedAt('desc')
->limit(10)
->find();
第2步:选择type = 2
的2 随机文章,随机将它们插入当前$articles
对象。这是我感到茫然的一步。
例如,最终得到的结果将如下所示:
似乎我应该能够通过编写某种ArticleQuery
函数来扩展insertRandomSponsoredArticles()
类,但我不太清楚如何解决这个问题。
答案 0 :(得分:0)
应该可能。您也许可以添加自己的终止子函数来处理数组。在您的ArticleQuery类中是这样的。
public function insertRandomSponsoredArticles(array $articles)
{
$results = $this->find()->toArray();
$count = count($results);
$pos1 = rand(0, $count-1); // Random position 1
$pos2 = rand(0, $count-1); // Random position 2
array_splice($results, $pos1, 0, $articles[0]);
array_splice($results, $pos2, 0, $articles[1]);
return $results;
}
然后也许像这样使用它:
$articles = ArticleQuery::create()
->filterByType(1)
->orderByPublishedAt('desc')
->limit(10)
->insertRandomSponsoredArticles($randArticles);