簡體   English   中英

SPIP API SQL,在自定義表上左聯接

[英]SPIP API SQL, left join on a custom table

使用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_articlesspip_random之間完成連接,因為我擁有以下兩個字段:

  • object
  • id_object

但是什么也沒返回。

如果我嘗試這個簡單的循環,它將顯示正確的#ID_OBJECT

<BOUCLE_day(spip_random) {par date_picked} {inverse} {0,1}>
    #ID_OBJECT
</BOUCLE_day>

我根本無法加入我的自定義表( spip_random )和ARTICLESspip_articles )。 我想念什么嗎?

我終於找到答案了。

SPIP使用法語作為默認語言,包括用於函數,關鍵字和... SQL列!

我需要使用objetid_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;

您為什么不使用發布日期? 然后只顯示當天的文章。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM