如果我从表中删除整行并将该行的两列值插入另一个表,那么我的模型函数结构应该是什么?我想使用有效记录。
function foo()
{
$this->db->truncate('to');
$query = $this->db->get('from')->result(); // get first table
foreach($query as $row) // loop over results
{
$this->db->insert('to', $row); // insert each row to another table
}
}
这是移动整行。我只想要两个特定的专栏。我该怎么办?
修改 这是正确的方式吗?
public function refund()
{
$id = $this->uri->segment(4);
$data['accounts'] = $this->accounts_model->get_accounts_data_by_id($id);
foreach ($accounts as $row)
{
$data = array(
'barcode' => $row->barcode,
'refunded_amount' => $row->refunded_amount,
);
}
$this->db-insert('refund',$data);
}
答案 0 :(得分:2)
循环内部:
$insert = array(
"column_name_1" => $row->wanted_column_1,
"column_name_2" => $row->wanted_column_2
);
$this->db->insert('to', $insert);
编辑:
您的函数中未定义$ accounts。
尝试改为:
foreach ($data['accounts'] as $row)
{
$data = array(
'barcode' => $row->barcode,
'refunded_amount' => $row->refunded_amount
);
$this->db->insert('refund',$data);
}
答案 1 :(得分:2)
<强>控制器:强>
class Controllername extends CI_Controller
{
public function __construct()
{
parent::__construct();
$this->load->model('your_model');
}
public function somename()
{
$id = 6; // Row id to delete
$this->your_model->delete_table1($id);
$data = array(
array(
'col1' => 'val1',
'col2' => 'val2',
'col3' => 'val3',
),
array(
'col1' => 'val1',
'col2' => 'val2',
'col3' => 'val3',
),
);
$this->your_model->insert_table2($data);
}
}
的型号:强>
class Your_model extends CI_Model
{
public function __construct()
{
parent::__construct();
$this->db = $this->load->database('default',true);
}
public function delete_table1($id)
{
$this->db->delete('table1', array('id' => $id));
}
public function insert_table2($data)
{
$this->db->insert_batch('table2', $data);
}
}
的说明:强>
1)创建了一个函数,您可以在其中调用要从 $id
中删除的行的 table1
参数提供的模型函数。
2)第二个模型函数称为向 table2
插入2行,提供数组作为参数并使用 insert_batch()
活动记录功能。
3)在完成上述任务之前,不要忘记在Controller构造函数中 load the model
。