CodeIgniter 3 - 在2 db'

时间:2016-06-10 12:58:15

标签: php codeigniter model-view-controller

为我的nebie问题道歉,但我想在这里学到很多东西,MVC和CodeIgniter的新手。

我有一个简单的CRUD,我正在构建,但如果你知道自己在做什么,我会觉得这很简单。

我有一个用于将轮胎更新到数据库的视图用于表格'轮胎'。在该视图中,我想显示一个单独的数据库表中的品牌下拉列表'品牌'。在我的模型中,我有一类轮胎,并且我有一个功能:

public function get_tyres($id = FALSE)
{
if ($id === FALSE)
{
    $query = $this->db->get('tyres');
    return $query->result_array();
}
$query = $this->db->get_where('tyres', array('id' => $id));
return $query->row_array();
}

这允许我访问Controller中的Tires数据,并使用以下方法将数据发送到View:

$data['tyres_item'] = $this->tyres_model->get_tyres($id);
$this->load->view('tyres/update', $data);

在我的视图中,我访问$ data [' tyres_item'],以便我可以使用db数据预填充表单。

BUT

如何从数据库中访问品牌数据以在我的视图中构建所有品牌的下拉列表? 我有单独的品牌模型和控制器,但我无法在视图中访问它们。

我尝试添加

$data['brands'] = $this->brands_model->get_brands();

到我的轮胎控制器中的更新功能,但我知道这不会起作用,因为我在轮胎控制器内,而不是品牌控制器。

我怎样才能做到这一点,我知道我必须错过一些直截了当的事情......

这是我的观点:以及我想要实现的目标:

     echo form_open('tyres/update');
    ?>

    <label for="tyre">Tyre</label>
    <input type="input" name="tyre"  value="<?=$tyres_item['tyre']?>" />

    <label for="brand">Brand</label>
<?php
    echo form_dropdown('brands', $data['brands']);
?>

...

编辑 - 我已经将品牌模型添加到构造中并且有所帮助,我现在可以使用以下方式访问我视图中的品牌数据:

echo form_dropdown('brands', $brands);

但它返回一个数组,所以我添加了以下内容:

echo form_dropdown('brands', $brands['brand']);

然后出错:

Message: Undefined index: brand

我再次陷入困境! 帮助

1 个答案:

答案 0 :(得分:1)

知道了!

我需要遍历db结果然后将其添加到form_dropdown:

foreach($brands as $brand)
    {
            $brand_list[$brand['id']] = ucfirst(htmlspecialchars($brand['brand']));
    } 

echo form_dropdown('brands', $brand_list, $tyres_item['brand']);

这可能有助于某人。