![](/img/trans.png)
[英]jquery ui's“selectable” - need to call codeigniter model function
[英]codeigniter - call model's function in view
在视图中调用模型的功能可以吗?
我需要在里面放一个桌子孩子的桌子。
像这样:
row1
row1.1
row1.2
row2
row2.1
row2.2
row3
row3.1
row3.2
控制器:
$data['test'] = $this->model_test->get_parent_row()->result_array();
$this->load->view('test_view', $data);
我在视图中使用多foreach; 首先是foreach,以显示每一个父行,然后是子foreach,以显示行子行。 但这意味着我必须调用查询以基于父行获取行子。
有什么建议吗?
为了将逻辑保留在控制器中,我建议创建两个不同的视图。 一种带有子行数据,另一种带有父数据。 秘诀是在调用视图时将参数TRUE
传递给变量,而不是将其输出到浏览器。 控制器中的内容如下:
$parent = $this->model_test->get_parent_row()->result_array();
$children = ''; // INITIATE STRING TO STORE ALL CHILD VIEWS...
// LOOP THROUGH PARENTS...
foreach($parent as $child){
// CREATE YOUR QUERY TO GET CHILD ROW HERE...
// ADJUST TO WHATEVER YOUR MODEL NAME OR PARAMETERS ARE:
$child_row = $this->model->get_child_row($child)->result_array();
// THE TRUE PARAMETER RETURNS DATA FROM THE VIEW INSTEAD OF OUTPUT TO THE BROWSER
$children .= $this->load->view('child_view', $child_row, TRUE);
}
$this->load->view('parent_view', array('test'=>$children));
希望你理解逻辑。 在文档中找到有关视图的更多信息(向下滚动至末尾): https : //www.codeigniter.com/user_guide/general/views.html
更简单的方法是创建一个模型,该模型一次返回所有数据,然后将数组传递到一个视图,在该视图中,您可以一次遍历所有父母及其子女。
您可以在模型内完成此数组结构的操作。尝试以下逻辑以维护父子逻辑,您可以将其直接传递给视图。
在模型上:
function your_function_name() {
//select parent category
$parent_array = array();
$query1 = $this->db->get('parent-table');
foreach($query1->result() as $row1) {
$child_array = array();
// query for children
$query2 = $this->db->get('chilr-table')->where(id, $row1['id']);
foreach($query2->result() as $row2) {
$child_array[] = array(
'id' => $row2['id'],
'name' => $row2['name']
);
}
$parent_array[] = array(
'id' => $row1['filter_group_id'],
'name' => $row1['name'],
'children' => $child_array
);
}
return $parent_array;
}
在控制器上:加载模型
$this->load->model('model_name');
通过查看
$data['test'] = $this->model_name->your_function_name();
$this->load->view('test_view', $data);
希望对您有帮助
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.