joomla数据库查询列params os events manager

1dkrff03  于 2021-06-18  发布在  Mysql
关注(0)|答案(1)|浏览(408)

我正在使用os事件管理器,我需要显示来自表列的查询,以显示os事件管理器中params列下的“field\u speaker”。我有这个密码:`

  1. $query = $db->getQuery(true)
  2. ->select('a.*')
  3. ->from('#__eb_speakers AS a')
  4. ->innerJoin('#__eb_events AS b ON a.id = b.speaker_id')
  5. ->where('b.event_id = ' . $event->id)
  6. ->order('b.id');
  7. $db->setQuery($query);
  8. $speakers = $db->loadObjectList();
  9. print_r($speakers); ?>'

我不知道如何调用列params“field\u speaker”,如我提供的图片所示。。。如果你看我的代码,我只有eb\u事件-这就是一切都出错的地方,我猜???
任何帮助都将不胜感激。我懂一点php显然不够。。。山姆

bmp9r5qi

bmp9r5qi1#

你似乎只对 params 列,所以只在select子句中写入该列并使用 loadColumn() 访问数据(生成一维数组以简化处理)。
https://docs.joomla.org/selecting_data_using_jdatabase#single_column_results
如果你想要更多的列 params ,您应该在查询中显式地命名它们,并使用不同的方法来收集结果集(参见上面的链接)
我未经检验的建议:

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

p、 当你有基于joomla的问题时,请在joomla stack exchange中发布,这样社区就有了一些新的东西可以讨论。

展开查看全部

相关问题