【问题标题】:select data with condition codeigniter使用条件代码点火器选择数据
【发布时间】:2020-11-26 15:46:11
【问题描述】:

我想显示所有备件 其中 tb_sparepart.id_jenis = id_jenis 且 tb_sparepart.id_merk = id_merk 且 tb_sparepart.id_merk = 1

id_merk 1 = 意味着所有的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,
            'sparepart' => $data_sparepart->sparepart,
        ];
        array_push($hasil['spareparts'], $spareparts);
    }
}
return $hasil;

}

我尝试了这个模型,结果是这样的: 结果是由 id jenis 显示的备件。 但我想显示 id merk 汽车的数据备件和 id merk 为 1 的备件(所有 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);
            $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。

我想在 misubishi fuso 展示备件是:

  • roda gede sekali (id_merk = 1)
  • punya mishubisi (id_merk = 14)
  • oli mesin 卡车 (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    |

我的意思是 tb_sparepart 中的 id_merk 1 是一个 all merk。

如果我调用 tb_kendaraan.id_kendaraan = 1 备件必须显示为:

  • roda gede sekali
  • oli mesin 卡车
  • 普尼亚日野

如果我调用 tb_kendaraan.id_kendaraan = 2 备件必须显示为:

  • roda gede sekali
  • punya misubisi
  • oli mesin 卡车

如果我调用 tb_kendaraan.id_kendaraan = 3 备件必须显示为:

  • 部分摩托车
  • 摩托车发动机

谢谢你的帮助

【问题讨论】:

    标签: mysql codeigniter select where-clause


    【解决方案1】:

    不确定我是否理解这个问题,但我认为您只需要在最后一个数组中添加 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;
    }
    

    【讨论】:

    • 不起作用,兄弟,我的意思是在 'tb_sparepart.id_jenis'、$data_kendaraan->id_jenis 和 'tb_sparepart.id_merk'、$data_kendaraan->id_merk 和 'tb_sparepart.id_merk'、'1' 的位置显示数据
    猜你喜欢
    • 2012-05-29
    • 1970-01-01
    • 2012-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-14
    相关资源
    最近更新 更多