显示侧栏中类别背后的工厂数量。笨

时间:2013-04-02 07:35:32

标签: php codeigniter join count records

我有一个带有类别的侧边栏。当我点击一个类别时,它会向我显示位于该类别中的工厂。

我使用codeigniter中的连接做到了这一点。

现在我想说明一个类别中有多少工厂。例如:

Categories.

Cars (2)
Books (7)
Animals (45)

因此,简单地说明工厂有多少特定类别。

我试着做一个简单的count_all_results,但后来我得到了工厂的总数。但是我希望他们按照类别的具体ID来计算。

我的模特功能:

function categorieen_getall($segment3)
{
    $this->db->where('categorieen.idcategorieen', $segment3);
    $this->db->select('*');
    $this->db->from('bedrijfcategorieen');
    $this->db->join('categorieen', 'categorieen.idcategorieen = bedrijfcategorieen.idcategorieen');
    $this->db->join('bedrijven', 'bedrijven.idbedrijven = bedrijfcategorieen.idbedrijven');
    $query = $this->db->get();
    $result = $query->result();
    /*
    echo '<pre>';
    print_r($result);
    */
    return $result;
}

我的控制器功能:

    function get_All()
    {
        $data['cat'] = $this->categorieen_model->categorieen_getall($segment3);
        $this->load->view('views/sidebar', $data);
    }

我的观点:

    <div id="sidebar">
    <?php
    echo '<h3>Categorieën</h3>';
    echo ($this->db->count_all_results('categorieen')); 

    ?>

        <hr>
        <br/>
        <?php
        echo '<ul>';
        if(isset($cat) && is_array($cat)){
            foreach($links as $k => $value){

                echo '<li>';
                echo '<br>';
                echo '<a href="'.base_url().'home/categorie/'.$value->idcategorieen.' ">' .$value->Categorie. '</a>';
                echo '</li>';

            }
        }
        echo '<ul>';
        /*
        if(isset($cat ) && is_array($cat )){
            foreach($cat as $key => $row){
                echo "Categorie:"; echo $row->Categorie;
                echo "<br />";
                echo $row->idcategorieen;
                echo "<br />";
                echo $row->Bedrijfsnaam;
            }
        }
        */
        ?>
</div>

我的数据库方案:

Factories
--------
idfactories
factoryname
adress
email
...

Categories
----------
idcategories
Category


Factorycategories
-----------------
idfactorycategories
idcategories
idfactories

2 个答案:

答案 0 :(得分:0)

这不太合适,因为我知道有更好的方法可以做到这一点,但这将为您完成工作:

// Get categories
$categories = array();

$query = $this->db->query("select * from `Categories` order by `idcategories`");

if($query->num_rows() > 0)
{
  foreach($query->result_array() as $row)
  {
    $query_count = $this->db->query("select `idfactorycategories` from `Factorycategories` where `idcategories` = {$row['idcategories']}");
    $factory_count = $query_count->num_rows();

    $categories[] = array(
      'count' => $factory_count 
    );
  }
}

为方便起见,您可以先在foreach循环中获取类别,然后为每个类提交factories表的查询,以获取具有该相关类别ID的工厂的相关计数。

答案 1 :(得分:0)

我问了另一个问题。同样的问题,我解决了它。

用我得到的解决方案看看我自己的答案!

Count results in joined table and show between () in sidebar

感谢帮助我的人们:)