|
本帖最后由 helloworld1987 于 2009-4-25 21:50 编辑
刚开始学习CI,看到手册上说:CI在插入数据的时候,可以使用数组,也可以使用对象.
比如:
使用数组插入:
PHP复制代码
$data = array(
'title' => 'test',
'body' => 'test body'
);
$this->db->insert('tableName',$data);
复制代码
使用对象插入:
PHP复制代码
class obj extends Model
{
public $title;
public $body;
public function add()
{
// 请注意:这是的第二个参数是当前对象
// 我看手册上是这样写的
// 第一个疑问: 这个的参数为对象时,实际上是插入了这个对象的每个属性的值吗?
$this->db->insert('tableName',$this);
}
}
复制代码
第二个疑问:如果我在修改时,也想将对象作为参数来修改,但是我又想只修改其中一个字段,比如title,那么body就会保持为空,如果这样,它应该会把我body及其他字段也给修改了,这样怎么办?
不知道大家明白了没有,可能我表达的不太好,在这里贴上一段代码,是我写的一个Model,供大家参考一下,可能要直观一点:
PHP复制代码
<?php
class Blog_model extends Model
{
public $a_id;
public $a_title;
public $a_body;
public $a_user;
public $a_date;
public function __construct()
{
parent::Model();
$this->load->database();
}
/**
* 读取列表
*
* @return unknown
*/
public function read_list()
{
$this->db->from('article');
return $this->db->get();
}
/**
* 添加方法
*
* 这里添加的时候,我参数使用的是$this
* 因为我看手册上是这样写的,但是又没有详细说明,只简短介绍了下这种方式
* 但是我很喜欢这种方式,希望大家能说明一下:
* $this->db->insert($this);
* 我将对象作为参数 传给insert方法,那么是否将这个对象的属性转换成了一个数组:
* array(
* 'title' => '',
* 'body' => ''
* )
*
*/
public function add()
{
$this->db->from('article');
$this->db->insert($this);
}
/**
* 修改方法
* 注意这个方法,不知道这样写有没有错
* 如果我在外部修改的时候是这样的:
*
* $this->Blog_model->title = 'hello world!';
* $this->Blog_model->update();
*
* 这样是只修改了 blog 对象的title属性,那么我将这个对象作为参数传给 db 的 update 方法,它会不会修改我其他的信息?比如 body ?
*
*/
public function update()
{
$this->db->from('article');
$this->db->where('a_id',$this->a_id);
$this->db->update($this);
}
/**
* 删除方法
*
*/
public function delete()
{
$this->db->delete($this->a_id);
}
}
?>
复制代码 |
|