2011-12-29 2 views
0

я хочу считать комментарии в каждой статье ..а в комментариях встречного местом между Еогеаспом loop..so я не могу правильно рассчитывать комментарии ... поэтому я хочу цикл, но я не нужна петля в счетчикеКак найти счет в петле foreach?

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 

Теперь, когда вы добавляете новый пост, вы будете иметь COMMENT_COUNT поле с начальным значением 0. Когда новый комментарий добавлен или удален из Post значение счетчика будет автоматически Обновить.

Это позволяет просто перебираем массив сообщений и эхо значение COMMENT_COUNT поля или использовать значение для проверки комментариев затем вставлять элемент и т.д.

+0

abba thannnnnnnks..больше спасибо..большое решение .. – user1080247

2

Вы можете подсчитать количество элементов в массиве с sizeof().

+0

вы имеете в виду идентификатор сделать это user1080247

+0

i tjink, вы меня не понимаете ... подсчет я имею в виду не функцию, а код mysql, такой как SELECT COUNT – user1080247

+0

В чем проблема? Вы можете сделать 'SELECT COUNT (*) FROM tbl', чтобы получить количество строк в таблице' tbl'. – kba

0

Krisitian дал вам ответ, но могу ли я предложить вам сделать все свое оформление в интерфейсе.

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