Joomla数据库查询列参数OS Events Manager

时间:2018-10-06 15:07:45

标签: php mysql joomla3.0

我正在使用OS Events Manager,我需要显示来自表列的查询以显示“ field_speaker”,这是OS Events Manager中params列的下方。我有以下代码: `

$query   = $db->getQuery(true)
->select('a.*')
->from('#__eb_speakers AS a')
->innerJoin('#__eb_events AS b ON a.id = b.speaker_id')
->where('b.event_id = ' . $event->id)
->order('b.id');
$db->setQuery($query);
$speakers = $db->loadObjectList();
print_r($speakers); ?>'

我不知道如何将列参数称为“ field_speaker”,如我提供的图像所示...如果看我的代码,我只有eb_events,我猜这就是哪里出错了吗? ?

任何帮助将不胜感激。我知道一点PHP-显然还不够...  山姆enter image description here

1 个答案:

答案 0 :(得分:0)

您似乎只对params列感兴趣,因此仅在SELECT子句中写入该列,然后使用loadColumn()访问数据(生成一维数组以简化处理)。

https://docs.joomla.org/Selecting_data_using_JDatabase#Single_Column_Results

如果您想要的列多于params,则应在查询中明确命名它们,并使用其他方法收集结果集。 (请参见上面的链接)

我未经测试的建议:

$query = $db->getQuery(true)
            ->select('a.params')                 // only ask for what you intend to use
            ->from('#__eb_speakers AS a')
            ->innerJoin('#__eb_events AS b ON a.id = b.speaker_id')
            ->where('b.event_id = ' . (int)$event->id)   // for security cast as an integer
            ->order('b.id');
$db->setQuery($query);
if (!$params = $db->loadColumn()) {
    echo "No Data Found for " . (int)$event->id;
} else {
    foreach ($params as $param) {
        $speakers[] = json_decode($param, true)['field_speaker']; // I assume this key always exists
    }
}
var_export($speakers);  // this will show you the isolated speaker data

p.s。当您遇到基于Joomla的问题时,请将其发布在Joomla Stack Exchange中,以便该社区可以学习一些新内容。