Модель Codeigniter Функция и запрос не работает - PullRequest
0 голосов
/ 14 мая 2018

Я пытаюсь выполнить запрос в модели codeigniter. Работает, но когда я повторяю запрос функции модели, как показано ниже.

SELECT * FROM `table1` WHERE `id` = '17'
SELECT * FROM `table1` WHERE `id` = '20'
SELECT * FROM `table1` WHERE `id` = '21'
SELECT * FROM `table1` WHERE `id` = '22'
SELECT * FROM `table1` WHERE `id` = '23' 

Функция моей модели приведена ниже

function get_quick_navi_menu($q_code)
{
$this->db->select("*");
$this->db->where('q_id',$q_code);
$this->db->from("table0");
$q = $this->db->get();
//echo $this->db->last_query();
$final = array();
if ($q->num_rows() > 0) 
{
foreach ($q->result() as $row) {
$this->db->select("*");
$this->db->from("table1");
$this->db->where("id",$row->id);
$q = $this->db->get();
echo $this->db->last_query();
if ($q->num_rows() > 0) {
$row->children = $q->result();
}
array_push($final, $row);
}
}

Я хочу выполнить запрос, как показано ниже

SELECT * FROM `table1` WHERE `id` = '17,18,19..'
Структура таблицы

Table0

id   q_id  value1

1      2       4

2      2       5

3      2       6

Table1

t1_id   id  value1   value2

 1      1      2         2
 
 2      2      5         6
 
 3      3      8         12
Просмотр

<ul class="dropdown-menu" aria-labelledby="dropdownMenu1" style="margin-left: 1px; opacity: .9;">
						
						<?php foreach ($menus as $menu) { ?>	
                         <li class="dropdown-submenu"><a href="#" class="pan-btn" data-look="<?php echo $menu->sceneid;?>"><?php echo $menu->title;?></a>  
                           <ul class="dropdown-menu">        <?php
            if (isset($menu->children)) {
                foreach ($menu->children as $child) {?>
                
                <li><a href="#" class="pan-btn" data-look="<?php echo $child->menu_scene;?>"><?php echo $child->menu_item;?></a></li> <?php
                }
            }
            ?></ul></li><?php } ?>
 						</ul>
Контроллер

$menus = $this->Home_model->get_quick_navi_menu($q_code);
$data = array('menus' => $menus);

Обязательный выход

Выбор значения1 и значения2 из таблицы1 в соответствии с идентификатором из таблицы0.Как решить эту проблему, пожалуйста, помогите.

Ответы [ 2 ]

0 голосов
/ 14 мая 2018

Надеюсь, это поможет вам;

Получить все ids в имени массива здесь идентификаторы и использовать where_in вне цикла

public function get_quick_navi_menu($q_code)
{
    $this->db->select("*");
    $this->db->where('q_id',$q_code);
    $this->db->from("table0");
    $q = $this->db->get();
    $final = array();
    if ($q->num_rows() > 0) 
    {
        foreach ($q->result() as $key => $row) 
        {
            $ids[$key] = $row->id;
            $data[$key] = $row;
        }

        $this->db->select("*");
        $this->db->from("table1");
        $this->db->where_in("id",$ids);
        $q = $this->db->get();
        //echo $this->db->last_query();
        if ($q->num_rows() > 0) 
        {
            if ( ! empty($data))
            {
                foreach ($data as $key => $item) 
                {
                    $item->children = $q->result();
                    $final[] = $item;
                }
            }

        }
    }
    return $final;
    /*print_r($final);*/
}

В вашем классе контроллеров:

убедитесь, что вы загрузили модель и базу данных в контроллер или в autoload.php

 $q_code = 'q_code_value';
 $data['menus'] =$this->Home_model->get_quick_navi_menu($q_code);
 /* pass the $data in the view like this*/
 $this->load->view('your_view_file_path',$data);

На ваш взгляд:

<div><?php print_r($records);?></div>

Для более: https://www.codeigniter.com/user_guide/database/query_builder.html#looking-for-specific-data

0 голосов
/ 14 мая 2018

Используйте эту функцию в контроллере

public function getTableData()
    {
        $this->db->select('GROUP_CONCAT(id) as id');
        $tbl0 = $this->db->get('table0')->row_array();
        if($tbl0) {
                $ids = explode(',', $tbl0['id']);
                $this->db->where_in('id', $ids);
                $tbl1 = $this->db->get('table1')->result_array();
                echo "<pre>"; print_r($tbl1);

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