Соедините две таблицы с предложением where, используя CodeIginter - PullRequest
0 голосов
/ 25 декабря 2018

Я пытаюсь загрузить все данные из таблицы "main_tests", где main_tests.id = test_name_price.test_id и где test_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);

}

Ответы [ 2 ]

0 голосов
/ 26 декабря 2018

Ну, это то, что работает со мной, как шарм!

Я использовал @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>";

                                    }
                                }
0 голосов
/ 25 декабря 2018

Вот как объединить таблицы в 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() как массив.


Edit: Вот краткий пример того, какиспользуйте этот массив в вашем представлении, приведенный выше код вернет массив массивов, и вы можете обработать этот массив следующим образом:

<?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);

и, по вашему мнению, просто циклчерез этот массив, используя переменную

ИМХО .. Вы должны работать с документацией codeigniter и следовать любому пошаговому руководству по codeigniter, потому что ваша проблема не в том, что выне знаю, как объединить две таблицы, речь идет о том, как использовать сам фреймворк.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...