partizan
Новичок
Не понимаю логики
Функция должна выбрать из базы все сайты данной категории
Код:
Как видно из кода - функция сначала выбирает все сайты этой категории запросом
SELECT * FROM ...
WHERE CategoryId = ...
Потом собирает все найденные ID в список, и вторым запросом выбирает из них все, у которых approved и не deleted
SELECT * FROM ...
WHERE id IN (...) and (approved=1) and (deleted=0)
Я один не понимаю логику автора? Зачем 2 запроса?
Функция должна выбрать из базы все сайты данной категории
Код:
PHP:
function RetrieveByCategory($category_id, $order_by='Rating', $direction='desc', $all=FALSE)
{
$site_ids = array();
$cb = new ConditionBuilder();
$cb->add(new EqualCondition('ReviewCategoryId', $category_id));
$Finder = new ReviewSiteCategoryFinder();
foreach ($Finder->FindAllBySql($cb) as $ReviewSite) {
$site_ids[] = $ReviewSite->get('ReviewSiteId');
}
if (!empty($site_ids)) {
$cb = new ConditionBuilder();
$cb->add(new InCondition('Id', $site_ids));
$cb->addOrderBy('Approved', 'desc');
if (!is_array($order_by)) { $order_by = explode(',', $order_by); }
foreach ($order_by as $element) {
$cb->addOrderBy($element, $direction);
}
if (!$all) {
$cb->add(new EqualCondition('Approved', 1));
}
$cb->add(new EqualCondition('Deleted', 0));
return $this->FindAllBySql($cb);
} else {
return array();
}
}
SELECT * FROM ...
WHERE CategoryId = ...
Потом собирает все найденные ID в список, и вторым запросом выбирает из них все, у которых approved и не deleted
SELECT * FROM ...
WHERE id IN (...) and (approved=1) and (deleted=0)
Я один не понимаю логику автора? Зачем 2 запроса?