使用 Join CodeIgniter 创建动态模型
Make A Dynamical Model With Join CodeIgniter
我昨天问了这个问题,但它被删除了,因为管理员说它与其他 post 有类似的问题,但当我在那里检查时,它与我没有同样的问题,所以我再问一次希望管理员能理解。
我在 CodeIgniter 中有这个模型:
public function findJoinGroup($select,$where,$table,$join,$groupby)
{
$this->db->select($select);
$this->db->from($table);
$this->db->join($join);
$this->db->where($where);
$this->db->group_by($groupby);
return $this->db->get()->result_array();
}
它有一个我可以动态使用的参数(我的意思是我可以根据控制器使用不同值的模型)- 对吗?所以当我使用控制器时它会是这样的:
$select = array(
'ta.TR_APP_ID',
'ta.TR_SUB_DATE',
'ta.RB_ID',
'tr.RB_TOTAL',
'count(tdr.DET_RB_ID) as JUMLAH_ITEM',
'ME.EMP_FULL_NAME'
);
$join = array(
'tr_reimburse tr', 'tr.RB_ID = ta.RB_ID',
'tr_detail_reimburse tdr', 'tdr.RB_ID = tr.RB_ID ',
'm_employee me', 'tr.EMP_ID = me.EMP_ID',
);
$where = array(
'EMP_ID' => $empID,
'TR_APP_STATUS ' => '0',
);
$groupby = 'ta.TR_APP_ID';
$data['app'] = $this->Model_online->findJoinGroup($select,$where,'tr_approval ta',$join,$groupby);
我可以随心所欲地设置 select 的值,我可以随心所欲地设置 where 的值,等等
但是有一个问题:当我设置join的值时,它不像where和select那样起作用。
我收到这个错误:
An uncaught Exception was encountered
Type: ArgumentCountError
Message: Too few arguments to function CI_DB_query_builder::join(), 1 passed in C:\laragon\www\onlineform\application\models\Model_online.php on line 71 and at least 2 expected
Filename: C:\laragon\www\onlineform\system\database\DB_query_builder.php
Line Number: 526
我的问题是如何设置这个数组值,这样我就可以在模型中的变量 join
中使用它
所以我的模型可以用于许多需要连接的情况(无论是单连接还是多连接)
$join = array(
'tr_reimburse tr', 'tr.RB_ID = ta.RB_ID',
'tr_detail_reimburse tdr', 'tdr.RB_ID = tr.RB_ID ',
'm_employee me', 'tr.EMP_ID = me.EMP_ID',
);
我不想这样制作模型,因为这意味着它只能用于 4 连接,当我需要 3/2/1 连接时,我会再次制作模型。
$this->db->select('*');
$this->db->from('table1');
$this->db->join('table2','table1.id=table2.id');
$this->db->join('table3','table2.id=table3.id');
$this->db->join('table4','table3.id=table4.id');
$this->db->join('table5','table5.id=table4.id');
抱歉,我解释了很多,因为我找不到解决方案,我不想让管理员删除我未回答的 post :(
请不要删除此管理员让人们帮助我:')
使用多维 array.I认为这对你有用。
$join = array(
array('tr_reimburse tr', 'tr.RB_ID = ta.RB_ID'),
array('tr_detail_reimburse tdr', 'tdr.RB_ID = tr.RB_ID'),
array('m_employee me', 'tr.EMP_ID = me.EMP_ID'),
);
并像这样在模型端使用它。
if(!empty($join)):
foreach($join as $j):
$this->db->join($j);
endforeach;
endif;
我昨天问了这个问题,但它被删除了,因为管理员说它与其他 post 有类似的问题,但当我在那里检查时,它与我没有同样的问题,所以我再问一次希望管理员能理解。
我在 CodeIgniter 中有这个模型:
public function findJoinGroup($select,$where,$table,$join,$groupby)
{
$this->db->select($select);
$this->db->from($table);
$this->db->join($join);
$this->db->where($where);
$this->db->group_by($groupby);
return $this->db->get()->result_array();
}
它有一个我可以动态使用的参数(我的意思是我可以根据控制器使用不同值的模型)- 对吗?所以当我使用控制器时它会是这样的:
$select = array(
'ta.TR_APP_ID',
'ta.TR_SUB_DATE',
'ta.RB_ID',
'tr.RB_TOTAL',
'count(tdr.DET_RB_ID) as JUMLAH_ITEM',
'ME.EMP_FULL_NAME'
);
$join = array(
'tr_reimburse tr', 'tr.RB_ID = ta.RB_ID',
'tr_detail_reimburse tdr', 'tdr.RB_ID = tr.RB_ID ',
'm_employee me', 'tr.EMP_ID = me.EMP_ID',
);
$where = array(
'EMP_ID' => $empID,
'TR_APP_STATUS ' => '0',
);
$groupby = 'ta.TR_APP_ID';
$data['app'] = $this->Model_online->findJoinGroup($select,$where,'tr_approval ta',$join,$groupby);
我可以随心所欲地设置 select 的值,我可以随心所欲地设置 where 的值,等等
但是有一个问题:当我设置join的值时,它不像where和select那样起作用。
我收到这个错误:
An uncaught Exception was encountered
Type: ArgumentCountErrorMessage: Too few arguments to function CI_DB_query_builder::join(), 1 passed in C:\laragon\www\onlineform\application\models\Model_online.php on line 71 and at least 2 expected
Filename: C:\laragon\www\onlineform\system\database\DB_query_builder.php
Line Number: 526
我的问题是如何设置这个数组值,这样我就可以在模型中的变量 join
中使用它所以我的模型可以用于许多需要连接的情况(无论是单连接还是多连接)
$join = array(
'tr_reimburse tr', 'tr.RB_ID = ta.RB_ID',
'tr_detail_reimburse tdr', 'tdr.RB_ID = tr.RB_ID ',
'm_employee me', 'tr.EMP_ID = me.EMP_ID',
);
我不想这样制作模型,因为这意味着它只能用于 4 连接,当我需要 3/2/1 连接时,我会再次制作模型。
$this->db->select('*');
$this->db->from('table1');
$this->db->join('table2','table1.id=table2.id');
$this->db->join('table3','table2.id=table3.id');
$this->db->join('table4','table3.id=table4.id');
$this->db->join('table5','table5.id=table4.id');
抱歉,我解释了很多,因为我找不到解决方案,我不想让管理员删除我未回答的 post :(
请不要删除此管理员让人们帮助我:')
使用多维 array.I认为这对你有用。
$join = array(
array('tr_reimburse tr', 'tr.RB_ID = ta.RB_ID'),
array('tr_detail_reimburse tdr', 'tdr.RB_ID = tr.RB_ID'),
array('m_employee me', 'tr.EMP_ID = me.EMP_ID'),
);
并像这样在模型端使用它。
if(!empty($join)):
foreach($join as $j):
$this->db->join($j);
endforeach;
endif;