0

我仍在尝试将数据库查询结果从模型传递回控制器,最后传递给视图。我似乎将数据放到了正确的位置,我只是不确定如何最好地访问视图中生成的对象数组。

具体来说,我正在尝试在我的数据库中查询某人提交链接的最近 7 个不同日期。我返回一个日期数组,然后对于每个日期,我查询在该日期提交的所有链接并将结果存储在一个数组中。然后在视图中,对于每个不同的日期,我会显示一个标题(日期),紧随其后的是与之关联的链接。

来自我的不同日期查询 ($link_headers) 的数组:

Array (
    [0] => stdClass Object([added_date] => 2011-08-11)
    [1] => stdClass Object([added_date] => 2011-05-03)
    [2] => stdClass Object([added_date] => 2011-04-21)
    [3] => stdClass Object([added_date] => 2011-04-10)
    [4] => stdClass Object([added_date] => 2011-03-04)
    [5] => stdClass Object([added_date] => 2011-02-28)
    [6] => stdClass Object([added_date] => 2011-02-22)

)

来自我对提交的实际链接的查询的数组($links_result):

Array
(
    [0] => Array
        (
            [0] => stdClass Object
                (
                    [user_id] => 2
                    [link_id] => 1178
                    [link_url] => http://www.amazon.com/Silicone-Rubber-CASSETTE-Design-IPHONE/dp/B004YDJWOY
                    [link_name] => Silicone Skin BLACK CASSETTE TAPE
                    [link_notes] => iPhone case... probably won't fit in my dock.
                    [added_date] => 2011-08-11
                    [flag_new] => 1
                    [rating] => 4
                    [public] => 1
                )

        )

    [1] => Array
        (
            [0] => stdClass Object
                (
                    [user_id] => 2
                    [link_id] => 1177
                    [link_url] => http://snorby.org/
                    [link_name] => Snorby - Snort front-end
                    [link_notes] => 
                    [added_date] => 2011-05-03
                    [flag_new] => 1
                    [rating] => 4
                    [public] => 1
                )

        )

    [2] => Array
        (
            [0] => stdClass Object
                (
                    [user_id] => 2
                    [link_id] => 1176
                    [link_url] => http://www.nytimes.com/2011/04/17/business/17excerpt.html?_r=4&pagewanted=1&ref=business
                    [link_name] => Corner Office - The 5 Habits of Highly Effective C.E.O.s
                    [link_notes] => Sounds a lot like what Nathanial said...
                    [added_date] => 2011-04-21
                    [flag_new] => 1
                    [rating] => 4
                    [public] => 1
                )

        )

    [3] => Array
        (
            [0] => stdClass Object
                (
                    [user_id] => 2
                    [link_id] => 1175
                    [link_url] => http://chezlarsson.com/myblog/2010/06/panduro-concrete-challenge-3.html
                    [link_name] => Concrete book-ends
                    [link_notes] => Cool look... 
                    [added_date] => 2011-04-10
                    [flag_new] => 1
                    [rating] => 4
                    [public] => 1
                )

            [1] => stdClass Object
                (
                    [user_id] => 2
                    [link_id] => 1174
                    [link_url] => http://themeforest.net/item/reciprocity-photo-blog-gallery/154590
                    [link_name] => Site Templates - Reciprocity - Photo Blog
                    [link_notes] => 
                    [added_date] => 2011-04-10
                    [flag_new] => 1
                    [rating] => 5
                    [public] => 1
                )

        )

    [4] => Array
        (
            [0] => stdClass Object
                (
                    [user_id] => 2
                    [link_id] => 1173
                    [link_url] => http://lifehacker.com/#!5771943/the-always-up+to+date-guide-to-jailbreaking-your-ios-device
                    [link_name] => The Always Up-to-Date Guide to Jailbreaking Your iOS Device
                    [link_notes] => 
                    [added_date] => 2011-03-04
                    [flag_new] => 1
                    [rating] => 4
                    [public] => 1
                )

        )

    [5] => Array
        (
            [0] => stdClass Object
                (
                    [user_id] => 2
                    [link_id] => 1172
                    [link_url] => http://lifehacker.com/#!5754463/how-to-jailbreak-your-ios-421-device
                    [link_name] => How to Jailbreak Your iOS 4.2.1 Device
                    [link_notes] => 
                    [added_date] => 2011-02-28
                    [flag_new] => 1
                    [rating] => 4
                    [public] => 1
                )

        )

    [6] => Array
        (
            [0] => stdClass Object
                (
                    [user_id] => 2
                    [link_id] => 1171
                    [link_url] => http://www.bitplumber.net/2010/10/a-cassandra-hardware-stack-dell-c1100s-ocz-vertex-2-ssds-with-sandforce-arista-7048s/
                    [link_name] => A Cassandra Hardware Stack
                    [link_notes] => 
                    [added_date] => 2011-02-22
                    [flag_new] => 1
                    [rating] => 3
                    [public] => 1
                )

        )

)

...一切似乎都很好。但是我的问题来自我的观点,我正在尝试如上所述构建 HTML。我试图开始工作的代码的简化视图如下:

foreach ($link_headers as $header) {

echo "INDEX: ". $links_headers .", ADDED DATE: ". $header->added_date ."<BR>";

    foreach ($links_result[$link_headers] as $result){
        echo $result->added_date ."<BR>";
        echo $result->link_name ."<BR><BR>";
    }
}

所以,我试图使用第一个的索引来告诉我的 foreach 循环第二个数组的哪个索引循环并获取内容。很明显,我滥用了 $links_result[$link_headers] 变量,但我把它留在里面是为了展示我想要做什么。

很感谢任何形式的帮助!

迈克尔

4

1 回答 1

0

我不使用 CodeIgniter,但无论是在框架内还是从 PHP 中,我都会一口气抓住它,然后索引的问题就变得没有意义了:

SELECT * FROM model_table mt WHERE mt.added_date IN (
   SELECT DISTINCT md.added_date from model_table md
   ORDER BY md.added_date DESC
   LIMIT 7
) ORDER BY mt.added_date DESC

这应该会为您提供一系列按日期排序的模型,限制为最近 7 个日期。那么它只是选择何时显示标题的问题:

$current = null;
foreach($links as $link) {
   if($link->added_date !== $current) {
      // show the header and set current to the current date
      $current = $link->added_date;
      echo 'HEADER: Added on ' . $current . '<br />';
   }

   echo $row->added_date ."<BR>";
   echo $row->link_name ."<BR><BR>";
}
于 2013-03-14T19:45:22.617 回答