在控制器codeigniter的相同功能中加载多个模型

时间:2013-01-12 10:32:15

标签: php ajax codeigniter

我有一个页面,我想要显示动态的两个选择框。一个选择框从一个模型获取数据,然后从其他选择框获取。然后获取数据后,它将保存查询或两者的结果然后查看一个视图页面。

我想将数据保存在两个查询的数组中,这是我的控制器:

 function index(){

    $data['main_content'] = 'stockInView';



    $this->load->model('itemsModel');
    $query2 = $this->itemsModel->getAllItems();
    if ($query2)
    {
        $data['records'] = $query2;

    }

    $this->load->model('categoryModel');
    $query = $this->categoryModel->getAllCategories();
    if ($query)
    {
        $data['records'] = $query;

    }


    $this->load->view('dashboardTemplate/template',$data); 
    }

然后我在foreach循环中显示它们。但它只能显示第二个查询结果,或者在这种情况下只显示一个选择框中的类别而不显示其他选择框中的项目。我这是第一次这样做,所以我不知道该怎么做。

3 个答案:

答案 0 :(得分:2)

使用类别模型将行$data['records'] = $query2;更改为不同的$data数组元素键,如下所示:

$this->load->model('itemsModel');
$query2 = $this->itemsModel->getAllItems();
if ($query2)
{
    $data['itemRecords'] = $query2;
}

$this->load->model('categoryModel');
$query = $this->categoryModel->getAllCategories();
if ($query)
{
    $data['categoryRecords'] = $query;
}

$this->load->view('dashboardTemplate/template',$data);

然后在您的视图中,您使用$itemRecords$categoryRecords数组将它们输出到选择框。

答案 1 :(得分:0)

你正在写$ data ['records'] = $ query2; with $ data ['records'] = $ query; 所以最终你将获得第二个价值。您应该使用不同的数组字段 $ data ['records2'] = $ query2; $ data ['records'] = $ query2;

答案 2 :(得分:0)

您有两个模型, itemsModel categoryModel 。如果在构造函数中加载这两个模型,那么这两个模型都会在此控制器中被时间锁定。所以你可以在Construct函数中加载这两个模型。 看看下面的代码......

public function __construct() {
    parent::__construct();
    $this->load->model('itemsModel');
    $this->load->model('categoryModel');
}

public function index() {

    $data['main_content'] = 'stockInView';

    $query2 = $this->itemsModel->getAllItems();
    if ($query2) {
        $data['itemRecords'] = $query2;
    }

    $query = $this->categoryModel->getAllCategories();
    if ($query) {
        $data['categoryRecords'] = $query;
    }


    $this->load->view('dashboardTemplate/template', $data);
}