Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Codeigniter:如何在3个表之间建立描述顺序?_Php_Mysql_Codeigniter_Codeigniter Datamapper - Fatal编程技术网

Php Codeigniter:如何在3个表之间建立描述顺序?

Php Codeigniter:如何在3个表之间建立描述顺序?,php,mysql,codeigniter,codeigniter-datamapper,Php,Mysql,Codeigniter,Codeigniter Datamapper,所以我使用CodeIgniter和DataMapper。我制作了一个类似墙的东西,在那里你可以查看文章链接帖子图片帖子。这是3个不同的表,每个表都有一个名为“pubdate”的列。当您查看所有文章都显示在墙上,并且有旧文章,但有较新的链接文章,因为它们不“共享”相同的pubdate,并且每个表的顺序都正确 有没有办法让它们成为共享的pubdate,这样当我上传一个新的图片贴到我的网页顶部时?你可以连接每个表并从这些表中选择行。然后,你可以合并这些数组并按日期排序。我想,这是最糟糕的想法,但很可能

所以我使用CodeIgniter和DataMapper。我制作了一个类似墙的东西,在那里你可以查看文章链接帖子图片帖子。这是3个不同的表,每个表都有一个名为“pubdate”的列。当您查看所有文章都显示在墙上,并且有旧文章,但有较新的链接文章,因为它们不“共享”相同的pubdate,并且每个表的顺序都正确


有没有办法让它们成为共享的pubdate,这样当我上传一个新的图片贴到我的网页顶部时?

你可以连接每个表并从这些表中选择行。然后,你可以合并这些数组并按日期排序。我想,这是最糟糕的想法,但很可能运行成功


此外,您可以将这些表与一个具有ID的墙表连接起来,并且InsertionDate您可以通过这些字段创建墙提要。

您的解决方案是UNION。因为您从三个不同的表中获取数据,而这三个表之间没有关系,所以最好使用
联合
。另外,codeigniter的
活动记录
不支持
联合
,因此您必须编写整个sql查询。看看这个-

$sql = "(SELECT colA, colB, pubdate as dt FROM articles) UNION
        (SELECT colM, colN, pubdate as dt FROM link_posts) UNION 
        (SELECT colX, colZ, pubdate as dt FROM image_posts)
        ORDER BY dt DESC
       ";

$query = $this->db->query($sql);

这在DataMapperPHP for CodeIgniter中会是什么样子?目前,我的控制器中有3个循环,而且我正在使用Codeigniter的解析模板。