我是codeigniter的新手。我写过控制器,model.view。
我想在模型中执行另一个查询,该查询在where条件中具有来自第一个模型查询的“ID”,并在同一视图中传递两个查询的单独结果。
我在模型和视图中解释了它。 我怎么能这样做。需要一些语法我该怎么做呢。 或者这是正确的方式还是做某事?
控制器
class demo extends CI_Controller
{
function getRecords()
{
$offset = trim($this->input->get('off'));
$this->load->model('demo_model');
$data = $this->demo_model->get_messages($offset);
$return = $this->load->view('demo_view',array('records'=>$data),true);
die($return);
}
}
模型
class demo_model extends CI_Model
{
function get_messages($offset = 0)
{
$q = $this->db->query(" select Id,cloum2 from table");
// want to use ID from above query in to second query
// Like sql="select * from table where id='$id'" ;
// and how i pass the separate result for both query inthe view
return $q->result_array();
}
}
查看 demo_view;
<?php foreach($records as $row) :?>
<div> do something with $row </div>
<div> //want use second query foreach here </div>
<?php endforeach ;?>
答案 0 :(得分:0)
两个查询都将返回PHP数组,因此您可以执行类似的操作。
MODEL
function get_messages($offset = 0)
{
$q = $this->db->query(" select Id,cloum2 from table");
return $q->result_array();
}
function get_id($id){
$q = $this->db->query("select * from table where id='$id'");
return $q->result_array();
}
CONTROLLER
class demo extends CI_Controller{
function getRecords(){
$offset = trim($this->input->get('off'));
$this->load->model('demo_model');
$data = $this->demo_model->get_messages($offset);
for($c=0;$c<count($data);$c++){
$data[$c]['innerRow']=$this->demo_model->get_id($data[$c]['id']);
}
$return = $this->load->view('demo_view',array('records'=>$data),true);
die($return);
}
查看
<?php foreach($records as $row) :?>
<div> do something with $row </div>
<div>
<?php foreach($row['innerRow'] as $innerrow) :?>
......
<?php endforeach ;?>
</div>
<?php endforeach ;?>
(但这不是一个好主意,因为你会对模型运行一堆查询。最好考虑一个更好的查询)
答案 1 :(得分:0)
function getRecords()
{
$offset = trim($this->input->get('off'));
$this->load->model('demo_model');
$data = $this->demo_model->get_messages($offset);
$secresult=array();
foreach($data as $msg)
{
$res = $this->demo_model->get_result($msg['id']); // pass id to query
$secresult[]=$res;
}
$return = $this->load->view('demo_view',array('records'=>$data, 'theresult'=>$secresult),true);
die($return);
}
在您的视图文件中,您可以使用theresult
进行第二次循环。