slime09 发表于 2010-10-11 15:10:55

写了个model的扩展类,请大家看看有没有必要

刚接触ci,看了一下model,发现常用的方法都没有,随手写了个扩展,请指点一下,看看有没有必要。
<?php
/**
* S__model
* model基类扩展
* @author slime
*/
class S_model extends Model {
    var $_table;
    var $_primary = 'id';
    function S_model(){
      parent::Model();
    }

    /**
   * 根据id获取一条记录
   * @param int $id
   * @return obj
   */
    function get($id) {
      $this->db->where($this->_primary, $id);
      $query = $this->db->get($this->_table);
      if ($query->num_rows()) {
            return $query->row();
      }
      return false;
    }

    /**
   *获取所有记录
   * @return obj
   */
    function getAll() {
      $query = $this->db->get($this->_table);
      if ($query->num_rows()) {
            return $query->result();
      }
      return array();
    }

    /**
   *根据条件获取记录
   * @param string $where
   * @return obj
   */
    function getRows($where){
      $this->db->where($where);
      $query = $this->db->get($this->_table);
      if ($query->num_rows()) {
            return $query->row();
      }
      return false;
    }
}
使用方法:原来每个model类都 extends Model,现在改为 extends S_model

jeongee 发表于 2010-10-11 15:59:39

完全没必要啊
数据库有AR类

slime09 发表于 2010-10-11 16:33:40

完全没必要啊
数据库有AR类
ywqbestever 发表于 2010-10-11 15:59 http://codeigniter.org.cn/forums/images/common/back.gif

谢谢,看来CI确实和别的框架有点不一样,我看了一下ar类,看上去,CI不建议每张表做一个model类了?
怎么在ar类中指定一个表呢?
比如
$this->db->delete('tablename')
,怎么事先指定tablename,从而只输入
$this->db->delete()
完成删除操作呢?

jeongee 发表于 2010-10-11 16:34:47

没有这个,如有需求自己扩展

slime09 发表于 2010-10-11 17:05:20

收到,扩展了,谢谢。

sonic 发表于 2010-10-12 14:28:09

还是SQL语句比较灵活,很多时候写SQL就知道怎么写。为了这个还去查CI手册太麻烦了太麻烦。
页: [1]
查看完整版本: 写了个model的扩展类,请大家看看有没有必要