Joomla mysql查询参数像


joomla mysql query with parameter like

我想绑定内容项表的id并链接菜单表。我需要按照如下方式构建查询:

protected function getListQuery() 
{
    $url="index.php?option=com_content&view=article&id=";
    // Create a new query object.
    $db = JFactory::getDBO();
    $query = $db->getQuery(true);
    // select the items
    $query->select('ar.id,ar.alias,ar.introtext,ar.images,ar.created,m.link,m.path');
    // of content table and menu table
    $query->from('#__content as ar, #__menu as m');
    $query->where('m.link like '+$url+'ar.id');
    $query->order('ar.id desc');
    return $query;
}

查询返回0个结果。我需要附加$url参数和ar.id来生成我找到完整的url。

我想让你给我看的是表中链接到参数的菜单项列表。例如:

index.php?option=com_content&view=article&id=70

谢谢!

尝试使用Concat

     $query->where("m.link like CONCAT('%','$url',ar.id,'%') ");

我是Joomla的新手,所以我只从3.8.6版开始熟悉Joomla。

您的查询可以受益于一些适当的引用方法。

(为清晰起见,带逗号语法的join是join,又称INNER join)

如果您的实际列数据完全由$urlar.id附加表示,那么您不需要LIKE字符串比较函数(因为您不使用特殊字符:_%)。

  • q()quote()的缩写——用于字符串值
  • qn()quoteName()的缩写——用于列/表名
建议/未测试代码:
protected function getListQuery() 
{
    $url="index.php?option=com_content&view=article&id=";
    $columns = array('ar.id','ar.alias','ar.introtext','ar.images','ar.created','m.link','m.path');
    $db = JFactory::getDBO();
    $query = $db->getQuery(true)
                ->select($db->qn($columns))
                ->from($db->qn('#__content', 'ar'))
                ->join('INNER', $db->qn('#__menu', 'm'))
                ->where($db->qn('m.link') . " = CONCAT('$url', " . $db->qn('ar.id') . ")")
                ->order($db->qn('ar.id') . ' DESC');
    return $query;
}