在codeigniter中插入活动记录数据库
我正在做一个项目(使用codeigniter),在那里我使用了很多活动记录 我面临的问题如下: 我收到一个数据数组,我必须使用以下方法填写一些表格:在codeigniter中插入活动记录数据库,codeigniter,activerecord,Codeigniter,Activerecord,我正在做一个项目(使用codeigniter),在那里我使用了很多活动记录 我面临的问题如下: 我收到一个数据数组,我必须使用以下方法填写一些表格: $this->db->insert('db_name', $data); 现在,$data包含表中不可用的元素,因此我必须执行以下操作: unset($data['action']); unset($data['date']); 在插入之前,我只需构建另一个数组,该数组包含与特定表完全相同的元素 $arr = array( 'x'
$this->db->insert('db_name', $data);
现在,$data包含表中不可用的元素,因此我必须执行以下操作:
unset($data['action']);
unset($data['date']);
在插入之前,我只需构建另一个数组,该数组包含与特定表完全相同的元素
$arr = array( 'x' => $data['x'])
我以前已经使用过Kohana,我知道当使用ORM插入时,它只会忽略特定表中不可用的元素
$arr = array( 'x' => $data['x'])
Codeigniter中有类似的东西吗
PS)不使用任何外部库CI ActiveRecord不是ORM。如果要将ORM与Codeigner一起使用,您唯一的选择是使用第三方库: 在将数组发送到db之前,始终可以循环遍历该数组,并取消设置不包含任何内容的数据(如果事实上描绘器是空元素): 否则,您可以创建
switch
spaghetti来根据数据库和发送数据的页面取消设置元素:
switch ($page){
case "page1":
unset($data['blah']);
break;
....
}
据我所知,像这样的内置功能在CI的活动记录中并不存在(顺便说一句,它不是ORM) 如果手动取消设置数组元素太麻烦,则自动过程如下所示:
function my_insert ($table, $data) {
$query = $this->db->query('SHOW columns FROM '.$table);
$columns = array();
foreach ($query->result_array() as $row) {
$columns[] = $row['Field'];
}
foreach ($data AS $key => $value) {
if (!in_array($key, $columns)) {
unset($data[$key]);
}
}
$this->db->insert($table, $data);
}
它没有经过测试,可能还需要一些其他检查,但这会帮助你起飞