1

我有两个表,一个类别表和一个工厂表。在我的类别表中,我有以下行。

idcategory
category

在我的工厂表中,我有以下行。

idfactories
factoryname
postcode
country
telephone number
email
website
profile
adress
idcategory

我还有另一个表,其中也存储了 idfactory 和 idcategory。

我的 factorycategories 表有以下几行。

idfactorycat
idfactory
idcategory
factorycat

我加入了我的类别模型,因为我想要我网站上的类别,当我点击一个类别时,必须显示存储在该类别中的工厂。

在我的模型中,我有

$this->db->select('*');
$this->db->from('bedrijfcategorieen');
$this->db->join('bedrijfcategorieen', 'bedrijfcategorieen.idbedrijven = bedrijven.idbedrijven');
$this->db->join('bedrijfcategorieen', 'bedrijfcategorieen.idcategorieen = categorieen.idcategorieen');
$query = $this->db->get();

我实际上必须在我的控制器和视图中存储什么?我对codeigniter很陌生。

ps:我翻译了我的行,所以别人很容易理解,因为我是荷兰人。

谢谢

编辑:解释起来有点棘手,但我有一个侧边栏类别。

Categories

cars
cars parts
books
etc etc...

我想从每个类别创建链接。

当点击时,我们说汽车。我想转到结果页面,其中显示了类别 id=1 的工厂,因为汽车的 id=1。这是我的实际问题。我想我需要加入。

希望你能理解。

再次感谢。

4

2 回答 2

0

这更像是一个一般的 MVC 问题。您的数据库架构对于这个问题并不重要,因为您想知道如何访问数据而不是如何优化您的查询(据我所知)......

所以你的模型需要返回一些东西,比如return $query->result();. 然后您可以在控制器中使用它来获取该数据并将其发送到视图。例如:

控制器

$data['my_data'] = $this->my_model->my_get_function();  // this is calling your function above
$this->load->view('my_view', $data);  // loads my_view and sends the data array to it

在视图中,您保留了所有的演示 (HTML) 数据,但您可以访问控制器发送的数据,在我们的例子中,这将$my_data是一个对象,由您所做的查询返回的所有行组成。这将向您显示数据:

看法

// ...html here...
<div>
    <pre>
        <?php var_dump($my_data); ?>
    </pre>
</div>
// ...html here...

这些只是控制器和视图的示例部分。阅读有关 MVC 的更多信息,以更好地了解它应该如何工作。

于 2013-03-04T10:10:42.613 回答
0

编辑以匹配您的编辑

根据你的编辑,我只是​​在这里给你基本的想法。详情请参考codeigniter手册:

//模型

function getresults($segment3){
    $this->db->select('*');
    $this->db->from('category');
    $this->db->join('factories', 'category.idcategory. ' = factories.idfactories');
    $this->db->join('factorycategories', 'factorycategories.idfactory = ' . $segment3); 

    $query = $this->db->get();
    return $query->result();
}

//Note that it would return only results that match in all tables. 
//If you need to return more of a table, use right join or left join.


function categories(){ //Call this from controller to create the initial links
    $query = $this->db->get('category');
    return $query->result();
}

//控制器

function pageCategories(){ // Shows initial categories links on page
    $data["links"] = $this->modelname->categories();
    $this->load->view("page-to-view");
}

function pageFactories(){ // takes categories and shows factories
    $this->load->helper('url');
    $segment3 = $this->uri->segment(3);
    $data["results"] = $this->modelname->getresults($segment3);  
    $this->load->view("page-to-view");
}

//看法

print_r($results); //run a test - debug

显示您的链接(注意分段模式):

if(isset($links) && is_array($links)){
    foreach($links as $k => $value){
        echo '<a href="'.base_url().'Yourcontroller/pageFactories/'.$value->idcategory.' ">' .$value->category. '</a>';
        echo "<br />";
    }
}

if(isset($results ) && is_array($results )){
    foreach($results as $key => $row){
        echo $row->category;
        echo "<br />";
        echo $row->factoryname;
        //It goes on as much as you want
    }
}

这只是为了让您了解全局。

你如何将它转换回荷兰语是我无法弄清楚的。注意: google.translate.com 会因为您可能需要清理的大量空白而搞砸。

于 2013-03-04T10:47:13.380 回答