簡體   English   中英

使用CodeIginter將兩個帶有where子句的表連接起來

[英]Join two tables with where clause using CodeIginter

我正在嘗試從表“ main_tests”中加載所有數據,其中main_tests.id = test_name_price.test_idtest_name_price.list_id = 1

我正在嘗試這樣做,但是它只是在說錯誤的語法,我是CodeIginter的初學者。

我一直在尋找答案,但我無法准確獲得所需的東西,或者他們的方式對我不起作用

這是我的代碼

  $result =  $this->db->select('test_name_price.*, main_tests.*')
                                    ->from('test_name_price')
                                    ->where('test_name_price.list_id', 1)
                                    ->join('main_tests', 
                                  'test_name_price.test_id = main_tests.id')
                                    ->get();


                                if (count($result) > 0) {

                                    foreach ($result as $itemsl) {

                                        echo "


                    <option value='$itemsl->testname' data-code='$itemsl- 
                                      >test_code'>$itemsl->test_id</option>



                                         ";
                                    }
                                }

                                echo "</select>"

編輯:

這是我控制器中的代碼,該視圖是addpatient

    public function addpatient()

{

      $this->load->model("khmodel","Khmodel");


     $this->load->view('addpatient', array('result_array' => 
           $result_array));


}

這是我的看法

      <?php foreach ($result_array as $key => $value) : ?>


        <option value='<?= $value['testno'] ?>' data-code='<?= 
          $value['testno'] ?>'><?= $value['test'] ?></option>


                                <?php endforeach; ?>

這是我用來加載視圖的MasterPage函數,告訴我是否需要添加其他內容

    public function MasterPage($view='',$table='',$da='',$spg='',$szpg='')

{
    if (!empty($table)) {
        $data['result']=$this->Khmodel->get($table,$da,$spg,$szpg,"id 
             desc");
        $data['pages']=$this->Khmodel->pagesno($table,$szpg);
    }
    $data['sview']=$view;
    $data['index']=($view == 'home') ? '' : 'iner_page';


    $getlang =$this->uri->segment(1);//$this->input->cookie('shlang', TRUE);

    if($getlang=='en'){



        $this->lang->load('en', 'en');
        $data['lang']='en';
        $data['nav_align']='right';
        $data['xnav_align']='left';


    }
    else{




        $this->lang->load('ar', 'ar');
        $data['lang']='ar';
        $data['nav_align']='left';
        $data['xnav_align']='right';


    }

    //$this->load->view('main/close');
    $this->load->view('main/header',$data);
    if($view!='home'){
        $this->load->view('main/top_header',$data);

    }
    $this->load->view('main/'.$view);

    $this->load->view('main/footer',$data);

}

好吧,這對我來說就像是魅​​力!

我已經使用@Sherif Salah代碼的第一部分,在沒有控制器或模型的視圖內部,它實際上有效!

謝謝你的幫助

                                $table_one = 'test_name_price';
                                $table_two = 'main_tests';
                                $this->db->select("$table_one.*,$table_two.*");
                                $this->db->join($table_two, "$table_two.id = 
                                     $table_one.test_id", 'left');
                                $this->db->from($table_one);
                                $this->db->where("$table_one.list_id = 
                                         1");
                                $query = $this->db->get();
                                $result_object = $query->result();



                                if (count($result_object) > 0) {

                            foreach ($result_object as $itemsl) {

              echo "<option value='$itemsl->tsprice' data-code='$itemsl- 
                          >testno'>$itemsl->test</option>";

                                    }
                                }

這是在Codeigniter中聯接表的方法,但是請確保現在有相似的字段名稱,或者您必須單獨選擇它並手動重命名該字段。

$table_one = 'table_one_name';
$table_two = 'table_two_name';
$this->db->select("
    $table_one.*,
    $table_two.*
    ");
$this->db->join($table_two, "$table_two.id = $table_one.table_two_id", 'left');
$this->db->from($table_one);
$query = $this->db->get();

$result_object = $query->result();
$result_array = $query->result_array();

注意:如果上面的代碼正確,則必須以$result->result()作為對象或$result->result_array()作為數組來獲取結果。


編輯:這是一個有關如何在視圖中使用此數組的快速示例,上面的代碼將返回數組的數組,您可以按以下方式處理此數組:

<?php foreach ($result_array as $key => value) : ?>

    <option value='<?= $value['name'] ?>' data-code='<?= $value['code'] ?>'><?= $value['id'] ?></option>

<?php endforeach; ?>

注意:請保持邏輯在您的控制器中,只需將結果傳遞給視圖即可。


編輯:現在讓它保持簡單,假設您的查詢工作正常,並且您可以通過var_dump($result)進行檢查,所以現在您需要將此數據傳遞給視圖,但是您想這樣做,但是假設再次得到了result控制器,並且一切正常,現在您只需要將它傳遞給這樣的視圖:

$data = array("result" => $result);
$this->load->view('your_view', $data);

在您看來,只需使用變量result或您命名的任何內容就可以遍歷此數組。

恕我直言 ..您應該閱讀codeigniter的文檔,並按照codeigniter中的任何分步教程進行操作,原因是您的問題不是您不知道如何聯接兩個表,而是有關如何使用框架本身。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM