1

カテゴリテーブルとファクトリテーブルの2つのテーブルがあります。私のカテゴリテーブルには、次の行があります。

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

編集内容に合わせて編集します

あなたの編集に基づいて、私はあなたにここであなたに基本的な考えを与えているだけです。詳細については、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 に答える
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 の詳細を読んで、MVC がどのように機能するかをよりよく理解してください。

于 2013-03-04T10:10:42.613 に答える