使用 SPIP ,我正在尝试有一个系统,它会每天选择一篇随机文章。我需要存储当天的文章,主要原因有两个:
- 确保每个人都有同一天的文章
- 避免同一文章在前一天被第二次选中
为了能够存储所选项目,我创建了一个通用表:
CREATE TABLE IF NOT EXISTS `spip_random` (
`id_random` bigint(21) NOT NULL AUTO_INCREMENT,
`object` varchar(25) NOT NULL,
`id_object` bigint(21) NOT NULL DEFAULT '0',
`type` text NOT NULL,
`date_picked` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
PRIMARY KEY (`id_random`),
KEY `object` (`object`,`id_object`),
KEY `id_random` (`id_random`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;
这里有一堆可以存储的行:
(1, 'article', 54, 'article_of_the_day', '2014-11-29 00:03:54')
(2, 'article', 198, 'article_of_the_day', '2014-11-30 09:32:03')
(3, 'article', 113, 'article_of_the_day', '2014-12-01 14:11:04')
(4, 'article', 3, 'article_of_the_day', '2014-12-02 11:52:28')
选择当日文章的脚本运行良好。
现在,当我尝试在 SPIP 循环中检索这篇文章时,我遇到了一个问题。我正在考虑使用这种循环:
<BOUCLE_day(ARTICLES spip_random) {par date_picked} {inverse} {0,1}>
#ID_ARTICLE
</BOUCLE_day>
如 SPIP 文档 ( EN/FR ) 中所述,连接应该在 spip_articles
和 spip_random
之间完成,因为我有这两个字段:
对象
id_object
但没有返回任何内容。
如果我尝试这个简单的循环,它会显示正确的 #ID_OBJECT
:
<BOUCLE_day(spip_random) {par date_picked} {inverse} {0,1}>
#ID_OBJECT
</BOUCLE_day>
我根本无法加入我的自定义表 (spip_random
) 和 ARTICLES
(spip_articles
)。我错过了什么吗?
最佳答案
我终于找到了答案。
SPIP 使用法语作为其默认语言,包括函数、关键字和... SQL 列!
我需要使用 objet
和 id_objet
来让这段代码工作(注意缺少的 c
):
CREATE TABLE IF NOT EXISTS `spip_random` (
`id_random` bigint(21) NOT NULL AUTO_INCREMENT,
`objet` varchar(25) NOT NULL,
`id_objet` bigint(21) NOT NULL DEFAULT '0',
`type` text NOT NULL,
`date_picked` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
PRIMARY KEY (`id_random`),
KEY `objet` (`objet`,`id_objet`),
KEY `id_random` (`id_random`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;
关于mysql - SPIP API SQL,在自定义表上左联接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27252212/