SQL запрос
Как правильно составить запроc, и возможно ли это вообще за один раз получить небходимые данные, что бы заменить вот этот цикл:
$where = array('parent' => 628);
$resources = $modx->getCollection('modResource',$where);
$out = array();
foreach ($resources as $res) {
$c = $modx->newQuery('modTemplateVarResource');
$c->select( $modx->getSelectColumns('modTemplateVarResource','','',array('id','value')));
$c->where(array(
'tmplvarid' => 4,
'value:Like' => '%'.$res->get('id').'%'
));
$count = count($modx->getCollection('modTemplateVarResource', $c));
$out[] = array(
'uri' => $res->get('uri'),
'pagetitle' => $res->get('pagetitle'),
'count' => $count
);
}
Комментарии: 1
Как-то так, не уверен, что LIKE написал правильно, но суть понятна думаю.
$c = $modx->newQuery('modResource');
$c->leftJoin('modTemplateVarResource', 'TV', 'TV.tmplvarid=4 AND TV.value LIKE %modResource.id%');
$c->where(array(
'modResource.parent' => 628
));
$c->select(array(
'modResource.uri as uri',
'modResource.pagetitle as pagetitle',
'TV.id as tv_id',
'TV.value as tv_value'
));
if ($c->prepare() && $c->stmt->execute()) {
$data = $c->stmt->fetchAll(PDO::FETCH_ASSOC);
}
if (!empty($data)) {
$array = array();
foreach ($data as $value) {
// тут формируете нужный массив
}
print_r($array);
}
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.