我的模型有一个应该运行2个不同查询的函数。
理想情况下,我希望它能为我的控制器提供2个不同的变量(每个查询1个变量)。
下面的代码显然不起作用b / c第一个返回结束执行就在那里。但是我怎么能做一些会在同一个函数中产生这两个结果的东西呢?
感谢您提供的任何帮助/指针。
MODEL -- Hypothetical code
function ABC()
{
$query1 = $this->db->query( ... MySQL code #1 here ... );
$data1 = array();
foreach (query1->result() as $row){
$data1[$row->k] = $row->value;
return $data1;
$query2 = $this->db->query( ... MySQL code #2 here ... );
$data2 = array();
foreach (query2->result() as $row){
$data2[$row->k] = $row->value;
return $data2;
}
答案 0 :(得分:4)
function ABC()
{
$query1 = $this->db->query( ... MySQL code #1 here ... );
$data = array();
foreach (query1->result() as $row){
$data['query1'][$row->k] = $row->value;
$query2 = $this->db->query( ... MySQL code #2 here ... );
$data2 = array();
foreach (query2->result() as $row){
$data['query2'][$row->k] = $row->value;
return $data;
}
另见danip的回答
答案 1 :(得分:3)
得到任何反对返回数组($ data1,$ data2); ?
然后你可以使用list($ foo,$ bar)= $ baz-> ABC();在你想要的控制器中。
答案 2 :(得分:2)
你可以像fazo建议的那样做,但你的类/方法设计似乎有问题。您最好重构此代码并将结果返回到两个不同的函数中。
答案 3 :(得分:0)
使用以下经过测试并能正常工作的代码
function Submit()
{
$query1 = $this->db->query( INSERT INTO... MySQL code #1 here ... );
$query2 = $this->db->query( INSERT INTO... MySQL code #2 here ... );
return array( $query1, $query2);
}
或
function Submit()
{
$query1 = $this->db->query( INSERT INTO... MySQL code #1 here ... );
$query2 = $this->db->query( INSERT INTO... MySQL code #2 here ... );
return $query1;
return $query2;
}