CodeIgniter用户指南:模型

 

模型对于那些想用传统MVC方式的人来说是可选的。

什么是模型?

模型是专门用来和数据库打交道的PHP类。例如,假设你想用CodeIgniter来做一个Blog。你可以写一个模型类,里面包含插入、更新、删除Blog数据的方法。下面的例子将向你展示一个普通的模型类:

class Blogmodel extends Model {

    var $title   = '';
    var $content = '';
    var $date    = '';

    function Blogmodel()
    {
        // Call the Model constructor for PHP4
        parent::Model();
    }
    
    function get_last_ten_entries()
    {
        $query = $this->db->get('entries', 10);
        return $query->result();
    }

    function insert_entry()
    {
        $this->title   = $_POST['title']; // 请阅读下方的备注
        $this->content = $_POST['content'];
        $this->date    = time();

        $this->db->insert('entries', $this);
    }

    function update_entry()
    {
        $this->title   = $_POST['title'];
        $this->content = $_POST['content'];
        $this->date    = time();

        $this->db->update('entries', $this, array('id' => $_POST['id']));
    }

}

注意: 上面用到的函数是 Active Record 数据库函数.

备注: 为了简单一点,我们直接使用了$_POST。不过,这不太好,平时我们应该使用 输入类:$this->input->post('title')

剖析模型

模型类文件存放在 application/models/ 文件夹。 如果你愿意,可以在里面建立子文件夹。

最基本的模型类必须像这样:

class Model_name extends Model {

    function Model_name()
    {
        parent::Model();
    }
}

Model_name 是模型类的名字。 类名的首字母必须大写,其他字母小写。并且确保你的类继承了基本模型类(Base Model Class)。

文件名应该是模型类名的小写版。比如,如果你的类是:

class User_model extends Model {

    function User_model()
    {
        parent::Model();
    }
}

类的文件名应该是:

application/models/user_model.php

载入模型

模型可以在 controller 中被引用。就像这样:

$this->load->model('Model_name');

如果模型文件在子文件夹下,引用的时候要带上相对路径名。例如:如果你有一个模型 application/models/blog/queries.php。下面的代码可以引用它:

$this->load->model('blog/queries');

模型一旦被载入,你就能通过下面的方法使用它:

$this->load->model('Model_name');

$this->Model_name->function();

如果你想给你的model指派一个不同的对象名,可以在加载模型函数中指定第二个参数:

$this->load->model('Model_name', 'fubar');

$this->fubar->function();

这里有个控制器的例子,加载一个模型,然后通过视图显示出来

class Blog_controller extends Controller {

    function blog()
    {
        $this->load->model('Blog');

        $data['query'] = $this->Blog->get_last_ten_entries();

        $this->load->view('blog', $data);
    }
}

自动载入模型

如果您需要一个在整个项目中都起作用的特定模型,您可以让 CodeIgniter 在初始化时自动装载它。实现的方法是打开 application/config/autoload.php 文件,然后在自动装载数组中添加上这个模型。

连接到数据库

当一个模型被载入时,它并不会自动连接数据库。以下方法可以使您连接数据库:

  • 您可以使用标准方法来连接数据库(说明), 也可以通过控制器或者您的自定义模型。
  • 您可以把第三个参数设置为TRUE来使模型装载函数自动连接数据库,连接配置可以在您的数据库配置文件中可以定义: $this->load->model('Model_name', '', TRUE);
  • 您可以手动设定第三个参数来载入您的自定义数据库配置: $config['hostname'] = "localhost";
    $config['username'] = "myusername";
    $config['password'] = "mypassword";
    $config['database'] = "mydatabase";
    $config['dbdriver'] = "mysql";
    $config['dbprefix'] = "";
    $config['pconnect'] = FALSE;
    $config['db_debug'] = TRUE;

    $this->load->model('Model_name', '', $config);

 

翻译贡献者: analyzer, Hex, longbill, shishirui, soyota
QuickCIM:从数据库生成CodeIgniter模型-开源 QuickCIM是一个很棒的免费开源工具,用于基于数据库表中的模板生成CodeIgniter模型。 生成的模型由Chris Schmitz(https://github.com/ccschmitz/codeIgniter-base-model)扩展了MY_Model。 另请查看http://davidburgosonline.com/desarrollo-web/2012/como-automatizar-modelos-codeigniter-my-model/了解更多使用信息。 使用CodeIgniter,jQuery和Backbone.js框架以PHP和Javascript编写。 立即下载

相关推荐

CI框架(CodeIgniter)公共模型类定义与用法示例

本文实例讲述了CI框架(CodeIgniter)公共模型类定义与用法。分享给大家供大家参考,具体如下: 我们都知道,操作数据库的方法都写在模型中。但是一般情况下,一张表往往至少对应4个操作,也就是所谓crud。那么如果20张表,所对应的模型方法,就达到了80个,重复的操作显然这已经是一个体力活儿。 那么就对单表操作时,我们进行一下简单的封装。如下是ci框架的示例: <?php /** * Created by PhpStorm. * User: kangjianrong * Date: 16-8-26 * Time: 上午10:29 */ class My_model extend

CodeIgniter入门

如果您是PHP开发人员,那么在选择您的编程语言时就可以很快找到一个深刻的发现:大型项目可能会变得混乱。 这并不是PHP的错。 是的,该语言功能丰富,并且具有足够的惯用弹性来区分一个程序员的工作与另一个程序员的工作。 在这方面,PHP与Perl相似,这是某些人喜欢它(而其他人则鄙视它)的原因之一。 任何审查过旧PHP项目的经验丰富PHP开发人员都可以轻松地在该项目的各个阶段检测不同开发人员的...

cuxiong8996的博客 474

Vivado ChipScope Debugging: Overcoming Common DRC Errors in FPGA Design

本文深入解析Vivado ChipScope调试中常见的DRC错误,特别是AVAL-244和AVAL-245等时钟相关问题,提供实用的Tcl命令解决方案和最佳实践。通过将DRC错误降级为警告的技巧,帮助FPGA设计者高效完成调试流程,同时强调何时应保留DRC检查以确保设计可靠性。

weixin_30335575的博客 416

学习CodeIgniter框架之旅(一)自定义模板目录

  在常用的框架本身都已经做好了分层和目录结构,但这在很多时候不满足项目的需求甚至在某些情况下变得不合理,因此很多时候需要自定义目录结构,在此就看看如果在CodeIgniter框架中自定义模板目录: 在CodeIgniter框架的入口文件就有一个配置项: /* *----------------------------------------------------------...

weixin_33868027的博客 166

从SD更新字库到FLASH,再用LCD显示

用Flash当字库存储载体。思路是先将要用到的字库文件存在SD卡,然后存储到Flash,LCD显示时候从Flash中读取 还挺顺利的,移植的原子的程序,自己稍加修改,主要是我的液晶屏函数,Flash读写函数,还有存储文件的flash地址不一样。一晚上搞定,大小字体都OK。挺高兴哈哈。这几天忙工作事情有点耽搁了学习进展嘿嘿 在text.c的showstr函数中char的字体颜色随意设置的,可以显...

weixin_30505751的博客 914

Origin画图——获取论文图中数据

有时候需要已发表论文的图的数据,这里使用Origin软件取值,并且可以实现对图形再次画图。 Step 1. 打开origin软件,点击工具,图形数字化工具。 Step 2. 打开要获取数据的图片。拉动红蓝坐标,与图的坐标轴所贴合。 Step 3. 打开要获取数据的图片。拉动红蓝坐标,与图的坐标轴所贴合。 Step 3. 设置参数横轴起始坐标为300-900,纵轴为1.8-2.6. Step 4. 点击第五个手动取点,取出图中数据点。 Step 5. 依次对原图进行取点。点击项目资源查看图。

qq_42278015的博客 5182

CodeIgniter4 用户指南构建与贡献指南

CodeIgniter4 作为一款现代化的 PHP 框架,其用户指南(User Guide)是开发者学习和使用框架的重要资源。本文详细介绍了如何构建本地用户指南环境、文档编写规范、以及如何为 CodeIgniter4 文档做出贡献。 ## 环境搭建 ### 系统要求 构建 CodeIgniter4 用户指南需要以下工具: - **Python 3.5+**:Sphinx 文档生成器的基础运...

gitblog_00820的博客 444

从医疗成像到工业检测:CMOS图像传感器NIR技术的最新应用案例解析

本文深入解析了CMOS图像传感器NIR技术在医疗成像和工业检测中的最新应用案例。通过提升量子效率至70%,NIR技术实现了血管可视化、材料缺陷检测等突破性进展,显著提高了医疗诊断精度和工业质检效率。文章还探讨了系统集成关键考量和前沿发展趋势。

weixin_30879169的博客 87

vLLM Semantic Router 与 vLLM AIBrix 集成部署指南:基于 Kubernetes 与 Gateway API 的生产级语义路由实践

> 本文以 v0.3 版官方部署文档为骨架,完整讲解如何在 Kubernetes 集群中把 vLLM Semantic Router(语义路由器)与 vLLM AIBrix(开源 GenAI 推理基础设施)整合为一体:由 Semantic Router 依据请求语义与策略选择模型池,由 AIBrix 负责模型工作负载的部署、弹性伸缩与副本级路由,再由 Envoy Gateway 通过 ext_pr

gitblog_00303的博客 1010

Python爬虫分析二手交易平台商品定价合理性:基于多维度数据挖掘与机器学习

本文针对二手交易平台商品定价合理性问题,设计并实现了一个基于Python的多技术融合爬虫系统,结合Scrapy框架、Selenium自动化测试工具、Anti-Scraping对抗技术以及机器学习算法,对国内主流二手交易平台(闲鱼、转转等)进行大规模数据采集与分析。系统实现了商品信息的多维度采集、价格合理性模型构建、可视化展示等功能,为二手商品买卖双方提供科学的定价参考。实验结果表明,该系统能够有效识别定价异常商品,准确率达到89.7%,具有较高的实用价值。关键词:Python爬虫;二手交易;定价分析;

2201_76125261的博客 297

团体程序设计天梯赛竞赛题--登顶题【L3-039 攀岩】

登顶级 3 道题,每道题 30 分,满分为 90 分。

Pretty Boy Fox的博客 653

CodeIgniter 用户指南

http://codeigniter.org.cn/user_guide/toc.html

逐日者 477

03 - AMDGPU驱动架构概览

本文介绍了AMDGPU驱动的整体架构,重点分析其图形驱动(AMDGPU)和计算驱动(KFD)的双重结构。KFD驱动作为HSA架构的核心组件,包含进程管理、设备管理等模块,其中SVM功能在kfd_svm.c实现。文章详细解析了KFD的核心组件、初始化流程及字符设备接口,并阐述了TTM框架在GPU内存管理中的作用。通过架构图和代码片段展示了AMDGPU与KFD的协作机制,为后续深入理解SVM实现奠定基础。

图形/计算GPU的驱动与虚拟化技术分享园地 3361

CodeIgniter 用户指南 — CodeIgniter 3.0.0 中文手册|用户手册|用户指南|中文文档

http://codeigniter.org.cn/user_guide/

Quiet_boy 557

CKS-CN考试之路----03

这题不需要去生成image和生成deployment所以只需要去检测对应的值即可。编辑/cks/docker/Dockerfile,修改最后第二行的值。编辑/cks/docker/deployment.yaml。

Q先生 824

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

CodeIgniter 用户指南 版本 1.7.2

CodeIgniter 用户指南 版本 1.7.2编辑文档、查看近期更改请 登录 或 注册  找回密码目录页 CodeIgniter 中国首页 › 用户指南首页 › 目录 搜索用户指南 

潇湘博客 1631

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

自定义扩展指南:如何基于CodeIgniter Base Model开发自己的模型类

CodeIgniter Base Model是一个功能强大的基础CRUD模型,它能够帮助开发者减少重复代码并提高开发效率。本指南将详细介绍如何基于这个模型开发属于自己的模型类,让你的CodeIgniter项目开发更加高效和灵活。 ## 了解CodeIgniter Base Model的核心功能 在开始自定义扩展之前,我们首先需要了解CodeIgniter Base Model的核心功能。这个基

gitblog_00314的博客 946

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

CodeIgniter4会话管理:用户认证和状态保持的完整指南

CodeIgniter4作为一款轻量级但功能强大的PHP框架,提供了完善的**会话管理**系统,让开发者能够轻松实现用户**认证**和**状态保持**功能。无论你是构建电子商务平台、社交网络还是内容管理系统,掌握CodeIgniter4的会话管理技术都是提升开发效率的关键。🚀 ## 什么是会话管理及其重要性 **会话管理**是Web应用开发中的核心功能,它允许服务器在多个HTTP请求之间保持

gitblog_00381的博客 944

CodeIgniter 4 登录与注册系统:快速搭建用户认证平台

CodeIgniter 4 登录与注册系统:快速搭建用户认证平台 项目介绍 CodeIgniter 4 登录与注册系统是一个基于CodeIgniter 4框架的用户认证解决方案。该项目通过简单的配置和几步操作,即可帮助开发者快速搭建一个功能完善的用户登录与注册系统。无论是个人项目还是企业应用,CodeIgniter 4 登录与注册系统都能为你提供一个稳定、高效的用户认证平台。 项目技术分析 技术栈...

gitblog_00233的博客 805

CodeIgniter-minify:为你的CodeIgniter项目加速

CodeIgniter-minify:为你的CodeIgniter项目加速 项目介绍 在现代Web开发中,优化前端资源(如CSS和JavaScript文件)的加载速度是提升用户体验的关键。CodeIgniter-minify是一个专为CodeIgniter框架设计的开源库,旨在简化CSS和JavaScript文件的压缩过程。通过这个库,开发者可以轻松地将多个CSS和JS文件合并并压缩,从而减少HT...

gitblog_00959的博客 419

CodeIgniter3-Translations 项目安装与配置指南

CodeIgniter3-Translations 项目安装与配置指南 1. 项目基础介绍 CodeIgniter3-Translations 是一个开源项目,为 CodeIgniter 框架提供了多种语言的系统消息翻译。CodeIgniter 是一个基于 PHP 的轻量级 Web 框架,它提供了丰富的库和助手,让 PHP 网络开发更加快速和简单。 主要编程语言:PHP 2. 项目使用的关键技术和...

gitblog_00564的博客 851

CodeIgniter框架之分页

控制器代码:public function page(){        $this-&gt;load-&gt;library('pagination');//加载分页库        $this-&gt;load-&gt;helper('url');        $this-&gt;load-&gt;model('user_model','user');//给模型取别名        $cou...

森森 2753

CodeIgniter-Aauth 用户授权库安装与使用教程

CodeIgniter-Aauth 用户授权库安装与使用教程 1. 项目介绍 CodeIgniter-Aauth 是专为 CodeIgniter 2.x 和 3.x 设计的用户授权库。它的目标在于简化用户管理、权限操作等核心功能,同时提供了诸如私人消息、用户组划分等高级特性。尽管它易于使用,但具备强大的功能集,非常适合那些寻求在CodeIgniter框架下快速实现复杂用户认证和权限控制的开发者。...

gitblog_00314的博客 674

CodeIgniter 2.1.0设置HMVC教程

很久没有来写点什么呢,今天刚好抽空来了,工作之后你会发现时间的确好紧,一天有做不完的事,有时候回家想写点什么的,赶脚很累结果放弃了,这人参啊一个“坚持”难到一堆人,我也不例外,之前我写的大部分都是在自己的博客,但前不久自己买的那空间说是被黑了,我的娘亲,数据全没了,我也难得去纠结这件事,当时自己做博客的时候刚刚接触互联网,所以在一家小的IDC买,人家这么说我也没追究啥,幸好的是我还有备份,好了不多

学子族的专栏 3020
上一篇: 编写高效的Android代码
下一篇: CodeIgniter用户指南:视图
SleepInDelphi
博客等级 码龄19年 32粉丝 388原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值