2014-11-04 39 views
4

我想选择所有从jos_content表中的列,并在Joomla.For jos_categories表,我用下面的查询一米栏:如何从joomla表中选择所有列?

$db = JFactory::getDbo(); 
$query = $db->getQuery(true); 
$query->select($db->quoteName(array('c.*', 'cat.alias'))) 
     ->from($db->quoteName('#__content', 'c')) 
     ->from($db->quoteName('#__categories', 'cat')) 
     ->where($db->quoteName('c.catid') .'='.$db->quoteName('cat.id')); 
$db->setQuery($query); 
$results = $db->loadObjectList(); 

但是,当我使用上面的查询它显示了以下错误:

1054 - Unknown column 'c.*' in 'field list' SQL=SELECT `c`.`*`,`cat`.`alias` FROM `jos_content` AS `c`,`jos_categories` AS `cat` WHERE `c`.`catid`=`cat`.`id` 

如果我使用'c.id'(或少数列名)而不是'c。*',它的工作完美。

如何解决这个问题。请帮助我的人。

在此先感谢

+1

你尝试从SELECT语句删除'$ DB-> quoteName'? – 2014-11-04 09:16:39

+1

你应该使用'join'子句;) – Lodder 2014-11-04 09:20:57

+0

@DavidePastore我也有类似的概率,因为OP,并且你的建议有所帮助,但是我怎样才能引用标识符名称?任何建议? – 2014-12-12 04:52:04

回答

2

您的代码工作:

$db = JFactory::getDbo(); 
$query = $db->getQuery(true); 
$query->select(array('c.*', 'cat.alias')) 
->from($db->quoteName('#__content', 'c')) 
->from($db->quoteName('#__categories', 'cat')) 
->where($db->quoteName('c.catid') .'='.$db->quoteName('cat.id')); 
$db->setQuery($query); 
$results = $db->loadObjectList(); 

随着JOIN代替:

$db = JFactory::getDbo(); 
$query = $db->getQuery(true); 
$query->select(array('c.*', 'cat.alias')) 
->from($db->quoteName('#__content', 'c')) 
->join('INNER','#__categories as cat ON cat.id = c.catid') 
->where($db->quoteName('c.catid') .'='.$db->quoteName('cat.id')); 
$db->setQuery($query); 
$results = $db->loadObjectList(); 
相关问题