繁体   English   中英

如何在Codeigniter中按键字段更新所有设置字段?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM