Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/238.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 查询联接表以按menudindex排序_Php_Mysql_Sql_Pdo_Modx - Fatal编程技术网

Php 查询联接表以按menudindex排序

Php 查询联接表以按menudindex排序,php,mysql,sql,pdo,modx,Php,Mysql,Sql,Pdo,Modx,我的问题是: $results = $modx->query("SELECT contentid FROM modx_site_tmplvar_contentvalues WHERE tmplvarid=107"); 我需要按menuindex对其进行排序,因此我尝试了以下方法: $results = $modx->query("SELECT contentid FROM modx_site_tmplvar_contentvalues JOIN mod

我的问题是:

$results = $modx->query("SELECT contentid FROM modx_site_tmplvar_contentvalues WHERE tmplvarid=107");
我需要按menuindex对其进行排序,因此我尝试了以下方法:

$results = $modx->query("SELECT contentid FROM modx_site_tmplvar_contentvalues JOIN modResource WHERE tmplvarid=107 ORDER BY menuindex DESC");
我对这个一点也不熟悉。当然不行了。有人告诉我使用XPDO,但我对此一无所知。我错过什么了吗?我该怎么做才能让它工作

以下是完整的代码:

<?php
$results = $modx->query("SELECT contentid FROM modx_site_tmplvar_contentvalues WHERE tmplvarid=107");

// description tv: 108
// vignette tv: 121

if (!is_object($results)) {
  return;
}
$breves = array();


while($r = $results->fetch(PDO::FETCH_COLUMN, 0)){
  $breves[] = $r;
}

$queryIn = implode(',' , $breves);

$results_2 = $modx->query("SELECT contentid, tmplvarid, value FROM modx_site_tmplvar_contentvalues WHERE contentid IN ({$queryIn}) AND tmplvarid IN (108, 121)");

if (!is_object($results_2)) {
  return;
}
$tvValues = array();

while($v = $results_2->fetch(PDO::FETCH_ASSOC)){
  if($v['tmplvarid'] == 108){
    $tvValues[$v['contentid']]['desc'] = $v['value'];
  } else {
    $tvValues[$v['contentid']]['vignette'] = $v['value'];
  }
}

$output = "";

foreach ($breves as $res_id) {
  $page = $modx->getObject('modResource', $res_id);
  $alias = $page->get('alias');
  $id = $page->get('id');

  $page_title = $page->get('pagetitle');
  $description = $tvValues[$res_id]['desc'];
  if(!$description || $description == ""){
    $description = $page->get('content');
  }
  $description = strip_tags($description);
  $description = mb_strimwidth($description, 0, 150, "...");
  $vignette = $tvValues[$res_id]['vignette'];
  if($vignette){
    $vignette = "/assets/upload/pln/" . $vignette;
  } else {
    $vignette = "https://www.commune-ploudaniel.fr/assets/templates/pln/default-b7824fcd998f51baf0f0af359a72e760.png";
  }

$output .= <<<HTML
  <div class="xpro-slider-item">
    <div class="xp-news-classic-block">
        <div class="xp-hover-image">
          <a href="{$alias}.html" ><div class="xp-overlay"></div></a>
            <a class="xp-view-lightbox" href="{$alias}.html" ><i class="fa fa-plus"></i></a>
            <img src="{$vignette}" alt="{$alias}" style="width:375px; height:270px; object-fit: cover;"/>
    </div>
        <div class="xp-news-detail">
          <h4><a href="{$alias}.html" data-display="lightbox">{$id}{$page_title}</a></h4>
          <p>{$description}</p>
          <div class='xp-news-footer'></div>
        </div>
    </div>
  </div>
HTML;

$output .= PHP_EOL;
}
return $output;
为MODX尝试以下操作:

$q = $modx->newQuery('modTemplateVarResource');
$q->leftJoin('modResource', 'mr', 'mr.id = modTemplateVarResource.contentid');
$q->where(array(
    'modTemplateVarResource.tmplvarid' => 107
));
$q->select(array(
   'modTemplateVarResource.contentid'
));
$q->sortby('modResource.menuindex', 'DESC');
$q->prepare();
$q->stmt->execute();
$result = $q->stmt->fetch(PDO::FETCH_ASSOC);
print_r($result);

考虑创建一个。你弄乱了你的刺痛的引文。代码>其中tmplvarid=107“ORDER BY menuindex DESC
这不是给您一个语法错误吗?这意味着什么它不起作用。会发生什么?您是否有任何错误?最上面的查询是如何关联的?在下面的查询中没有
join
,关于
join
如何关联的
on
标准应该是您的加入条件,查询将丢失
。您已经了解了SQL连接吗?