2011-12-29 87 views
0

我想在每一篇文章..但的foreach loop..so我不能正確計算評論的評論櫃檯的地方來算的意見,所以,我想循環,但我不需要循環的計數器如何在foreach循環中查找count?

articles_controller.php

$count = $this->Article->Comment->find(
    'count', array('conditions' => array('Comment.status' => 1)) 
); 

文章/ index.ctp

<?php 
// initialise a counter for striping the table 
$count = 0; 

// loop through and display format 
foreach($articles as $article): 
    // stripes the table by adding a class to every other row 
    $class = (($count % 2) ? " class='altrow'": ''); 
    // increment count 
    $count++; 

?> 

<?php 
    echo $html->link(
     $article['Article']['title'], 
     array('action' => 'view', $article['Article']['id']) 
    ); 
?> 

<!-- date and comment counter --> 
<p class="entry-meta"> 
    <span class="date"><?php echo $article['Article']['created']; ?></span> <span class="meta-sep">|</span> 
    <span class="comments-link"> 
    <!-- here i will put the comment counter --> 
    <a href="declining-health.html#respond"> <?php echo $count ['Comment'];>Comments</a> 
    </span> 
</p> 

<?php endforeach; ?> 

回答

2

使用在後>註釋關係counterCache財產,並確保你在崗位模型COMMENT_COUNT場。

IE:

<?php 
    class Post extends AppModel { 
     public $name = 'Post'; 
     public $hasMany = array(
      'Comment' => array(
       'className' => 'Comment', 
       'foreignKey' => 'post_id' 
      ) 
     ); 
    } 
?> 

<?php 
    class Comment extends AppModel { 
     public $name = 'Comment'; 
     public $belongsTo = array(
      'Post' => array(
       'className' => 'Comment', 
       'counterCache' => true 
      ) 
     ); 
    } 
?> 
// in the database table for table posts make sure to do the following 

add a column: comment_count int(11) default 0 

現在,當您添加一個新的職位,你將有0的初始值COMMENT_COUNT場當一個新的註釋添加或刪除一個帖子計數值將自動地更新。

這可以讓你簡單地遍歷所有的帖子陣列和呼應COMMENT_COUNT字段的值或使用該值檢查意見,然後嵌入元素等

+0

abba thannnnnnks ..更多謝謝..更好的解決方案.. – user1080247 2011-12-30 20:37:30

2

你可以指望在sizeof()出數組中元素的個數。

+0

你的意思是ID做到這一點<?PHP的回聲的sizeof( $ count ['Comment']);> – user1080247 2011-12-29 15:24:24

+0

我tjink你不瞭解我...計數我的意思不是功能,但像這樣的mysql代碼SELECT COUNT – user1080247 2011-12-29 15:26:24

+0

那麼問題是什麼?你可以做'SELECT COUNT(*)FROM tbl'來獲得表'tbl'中的行數。 – kba 2011-12-29 15:26:42

0

克里斯蒂安給了你答案,但我可以建議你在前端做所有你的造型。

CSS僞選擇

//styles every second(even) elements 
.your_class:nth-child(2n){background-color:hotpink;} 

tr:nth-child(2n){background-color:hotpink;} 

...these also work with jquery