[英]How can I update all settings fields by key field in codeigniter?
我有一个名为settings
的数据库表
CREATE TABLE IF NOT EXISTS `settings` (
`id` int(11) NOT NULL,
`key` varchar(255) NOT NULL,
`value` text NOT NULL,
`type` int(11) NOT NULL
)
这是我获取任何字段的模型:
<?php
class Settings_model extends CI_Model{
/*
* Get global settings
*/
public function get_global_settings() {
$query = $this->db->get('settings');
$result = $query->result();
return $result;
}
}
和控制器:
// Loop to get all settings in the 'globals' table
foreach($this->Settings_model->get_global_settings() as $result) {
$this->global_data[$result->key] = $result->value;
}
现在,如何使用foreach更新同一页面中的所有表字段?
如果我了解得很好,您正在尝试填充html表,如果可以,请考虑将视图加载到控制器中,并发送$ this-> global_data作为参数
$this->load->view('view', $this->global_data);
现在查看文件中的表
<table
<?php foreach($global_data as $data){?>
<tr>
<td><?php echo $data->value1;?></td>
<td><?php echo $data->value2;?></td>
<td><?php echo $data->value3;?></td>
</tr>
<?php } ?>
</table>
您可以使用codeigniter'update_batch'更新所有记录。 例如,
$data = array(
array(
'key' => 'name' ,
'value' => 'My Name'
),
array(
'key' => 'organisation' ,
'value' => 'My Organisation'
)
);
$this->db->update_batch('settings', $data, 'key');
上面的代码将生成这样的查询,
UPDATE `settings` SET `value` = CASE
WHEN `key` = 'name' THEN 'My Name '
WHEN `key` = 'organisation' THEN 'My Organisation'
ELSE `value` END,
WHERE `key` IN ('name','organisation');
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.