выберите данные с условием codeigniter - PullRequest
0 голосов
/ 06 августа 2020

я хочу показать всю запасную часть, где tb_sparepart.id_jenis = id_jenis и где tb_sparepart.id_merk = id_merk, а затем где tb_sparepart.id_merk = 1

id_merk 1 = означает весь мерк, но если я попробую модель всегда терпит неудачу.

я пробую эту модель:

function GetById($id_kendaraan){
    $this->db->select('*');
    $this->db->from('tb_kendaraan');
    $this->db->where('tb_kendaraan.id_kendaraan',$id_kendaraan);
    $query_kendaraan = $this->db->get();
$hasil = false;
if($query_kendaraan->num_rows() > 0)
{
    $data_kendaraan = $query_kendaraan->row();
    $hasil = [
        'tahun_beli' => $data_kendaraan->tahun_beli,
        'id_jenis' => $data_kendaraan->id_jenis,
        'id_merk' => $data_kendaraan->id_merk,
        'spareparts' => [] // empty array, to be filled with spareparts data
    ];
    $this->db->select('*');
    $this->db->from('tb_sparepart');
    $this->db->where('tb_sparepart.id_jenis', $data_kendaraan->id_jenis);
    $query_sparepart = $this->db->get();
    
    foreach ($query_sparepart->result() as $data_sparepart) {
        $spareparts = [
            'id_sparepart' => $data_sparepart->id_sparepart,
            'sparepart' => $data_sparepart->sparepart,
        ];
        array_push($hasil['spareparts'], $spareparts);
    }
}
return $hasil;

}

я пробую эту модель и результат такой: select by id jenis result is show sparepart by id jenis. but i want to show data sparepart where id merk the car and sparepart where id merk is 1 (all merk).

and i try next model.. my model :

function GetById($id_kendaraan){
        $this->db->select('*');
        $this->db->from('tb_kendaraan');
        $this->db->where('tb_kendaraan.id_kendaraan',$id_kendaraan);
        $query_kendaraan = $this->db->get();
        
        $hasil = false;
        if($query_kendaraan->num_rows() > 0)
        {
            $data_kendaraan = $query_kendaraan->row();
            $hasil = [
                'tahun_beli' => $data_kendaraan->tahun_beli,
                'id_jenis' => $data_kendaraan->id_jenis,
                'id_merk' => $data_kendaraan->id_merk,
                'spareparts' => [] // empty array, to be filled with spareparts data
            ];
            $this->db->select('*');
            $this->db->from('tb_sparepart');
            $this->db->where('tb_sparepart.id_jenis', $data_kendaraan->id_jenis);
            $this->db->where('tb_sparepart.id_merk', $data_kendaraan->id_merk);
            $query_sparepart = $this->db->get();
            
            foreach ($query_sparepart->result() as $data_sparepart) {
                $spareparts = [
                    'id_sparepart' => $data_sparepart->id_sparepart,
                    'sparepart' => $data_sparepart->sparepart,
                ];
                array_push($hasil['spareparts'], $spareparts);
            }
        }
        return $hasil;
    }

автор: id_merk изображение показывает запасную часть данных, где id merk = id merk.

я хочу показать запасную часть в misubishi fuso:

  • roda gede sekali (id_merk = 1)
  • punya mishubisi (id_merk = 14)
  • oli mesin truck (id_merk = 1)

без запасной части punya hino, потому что запасная часть punya hino - id_merk = 11.

пример: мой tb_kendaraan

|id_kendaraan|id_jenis|id_merk|
|     1      |   1    |   11  |
|     2      |   1    |   14  |
|     3      |   2    |   15  |

мой tb_sparepart

|id_sparepart|id_jenis|id_merk|sparepart         |
|     1      |   1    |   1   |roda gede sekali  |
|     2      |   1    |   14  |punya misubisi    |
|     3      |   1    |   1   |oli mesin truck   |
|     4      |   1    |   11  |punya hino        |
|     5      |   2    |   1   |part motorcyle    |
|     6      |   2    |   15  |motorcyle engine  |
|     7      |   2    |   16  |motorcyle lamp    |

я имею в виду id_merk 1 в tb_sparepart - это все мерк.

если я звоню tb_kendaraan.id_kendaraan = 1 запасная часть должна иметь вид:

  • roda gede sekali
  • oli mesin truck
  • punya hino

и если я вызываю tb_kendaraan.id_kendaraan = 2, запасная часть должна отображаться следующим образом:

  • roda gede sekali
  • punya misubisi
  • oli mesin truck

и если я вызываю tb_kendaraan.id_kendaraan = 3, запасная часть должна отображаться следующим образом:

  • part motorcyle
  • mot Orcyle Engine

спасибо за помощь

1 Ответ

0 голосов
/ 07 августа 2020

Не уверен, понял ли я вопрос, но думаю, вам просто нужно добавить id_merk в свой последний массив. Затем вы можете использовать поле «id_merk» в своих флажках. Вот так:

function GetById($id_kendaraan){
    $this->db->select('*');
    $this->db->from('tb_kendaraan');
    $this->db->where('tb_kendaraan.id_kendaraan',$id_kendaraan);
    $query_kendaraan = $this->db->get();
    
    $hasil = false;
    if($query_kendaraan->num_rows() > 0)
    {
        $data_kendaraan = $query_kendaraan->row();
        $hasil = [
            'tahun_beli' => $data_kendaraan->tahun_beli,
            'id_jenis' => $data_kendaraan->id_jenis,
            'id_merk' => $data_kendaraan->id_merk,
            'spareparts' => [] // empty array, to be filled with spareparts data
        ];
        $this->db->select('*');
        $this->db->from('tb_sparepart');
        $this->db->where('tb_sparepart.id_jenis', $data_kendaraan->id_jenis);
        $query_sparepart = $this->db->get();
        
        foreach ($query_sparepart->result() as $data_sparepart) {
            $spareparts = [
                'id_sparepart' => $data_sparepart->id_sparepart,
                'id_merk' => $data_sparepart->id_merk, // Add id_merk
                'sparepart' => $data_sparepart->sparepart,
            ];
            array_push($hasil['spareparts'], $spareparts);
        }
    }

    // To debug; uncomment this
    //echo '<pre>'; print_r($hasil); exit();

    return $hasil;
}
...