Thinkphp模型问题(一)】的更多相关文章

刚接触thinkphp模型的创建,在创建model类时在这里边声明了类的对象.唉,这是不理解的错误啊.什么叫做实例化模型对象,在控制器里边使用才创建. 模型这里写各种用到的函数. 这里我也体会到了查询语句的使用,在使用getByXXX的时候,是根据这个字段来查这个字段的所有信息. 在控制器中得创建模型的实例才能调用使用模型里的方法.…
thinkphp模型层Model.Logic.Service讲解 时间:2014-08-24 15:54:56   编辑:一切随缘   文章来源:php教程网 已阅读:771 次       js特效源码,就从这里开始 我有疑问[PHP186论坛提问] jS游戏桌球jS射击游戏CS 1.5jS超强俄罗斯方块jS连连看[推荐IE下运行]js自定义美女拼图游戏js关闭灯泡游戏js游戏连连碰js游戏潜艇大战游戏js游戏坦克大战js五子棋游戏           thinkphp模型层Model.Log…
一个小问题搞了好久:如果数据库的表名中有下划线,那么在用thinkphp做自动完成时注意Model类的命名要变成驼峰法,文件名和类名都要变.( 另外注意:只有使用create方法创建数据时才能调用到自动验证和自动完成 ) ThinkPHP 模型(Model)命名规范 模型命名规范ThinkPHP 对数据库的表名和模型类的命名遵循一定的规范.首先数据库的表名和字段全部采用小写形式,模型类的命名规则是除去表前缀的数据表名称,并且首字母大写,然后加上模型类的后缀定义.一些例子如下:表名(不含前缀)模型…
thinkphp模型中的获取器和修改器(根据字段名自动调用模型中的方法) 一.总结 记得看下面 1.获取器的作用是在获取数据的字段值后自动进行处理 2.修改器的作用是可以在数据赋值的时候自动进行转换处理 3.获取器应用:我们在数据库存性别的时候不能存男女,而可以存0(未知)1(男)2(女),这样快,获取器就是我在控制器中通过$user->toArray()从模型获取数据的时候,自动调用模型中的getSexAttr()方法,从而返回的结果里面直接是男女,而不是012 4.模型中的方法是自动调用的,…
thinkphp模型事件(钩子函数:模型中在增删改等操作前后自动执行的事件) 一.总结 1.通过模型事件(钩子函数),可以在插入更新删除等前后执行一些特定的功能 2.模型事件是写在模型里面的,控制器中也必须用了模型操作数据库才能触发模型事件 3.模型事件是需要注册的,注册了才能使用,可用init统一注册 4.支持传入一个参数,(当前的模型对象实例),也就是你传到模型中的数据,也就是你传到数据库中的数据 实例:图片上传 模型: <?php namespace app\admin\model; us…
thinkPHP模型中有个save方法,可用于新增数据和修改数据,这里容易出现混淆. 经过调试: before_write,不管是插入新数据还是修改数据都会执行: before_insert,只有插入新数据时才会执行: before_update,只有修改数据时才会执行:…
ThinkPHP模型基础类提供的连贯操作方法(也有些框架称之为链式操作),可以有效的提高数据存取的代码清晰度和开发效率,并且支持所有的CURD操作. 直线电机哪家好 使用也比较简单, 假如我们现在要查询一个User表的满足状态为1的前10条记录,并希望按照用户的创建时间排序 ,代码如下: $User->where('status=1')->order('create_time')->limit(10)->select(); 这里的where.order和limit方法就被称之为连贯…
1.获取系统常量信息的方法:在控制器DengLuController里面下写入下面的方法,然后调用该方法. public function test() { //echo "这是测试的" //$this->assign("a","world"); //$this->show(); var_dump(get_defined_constants());//获取系统常量信息.里面加上参数true,就会按照类把所有的信息显示出来. } 系统信…
很长一段时间,脑海里没有模型和控制器的区别,几乎把所有代码都敲在控制器里边了. 来自于ThinkPhp3.2.3手册模型定义 ​​​​​​​模型类的作用大多数情况是操作数据表的,如果按照系统的规范来命名模型类的话,大多数情况下是可以自动对应数据表.​​ 模型类的命名规则 最常用的一个数据表定义:就是你当前建立的模型名称并不是你所对应的表,这时候只需要使用一个数据表名称的属性tableName,这个属性定义不需要表前缀. 例如: ​​class CategoryModel extends Mo…
1.获取系统常量信息的方法:在控制器DengLuController里面下写入下面的方法,然后调用该方法. public function test() { //echo "这是测试的" //$this->assign("a","world"); //$this->show(); var_dump(get_defined_constants());//获取系统常量信息.里面加上参数true,就会按照类把所有的信息显示出来. } 系统信…
在ThinkPHP中,可以无需进行任何模型定义.只有在需要封装单独的业务逻辑的时候,模型类才是必须被定义的,因此ThinkPHP在模型上有很多的灵活和方便性,让你无需因为表太多而烦恼. 根据不同的模型定义,我们有几种实例化模型的方法,根据需要采用不同的方式: 直接实例化 可以和实例化其他类库一样实例化模型类,例如: $User = new \Home\Model\UserModel(); $Info = new \Admin\Model\InfoModel(); // 带参数实例化 $New =…
模型定义 模型类并非必须定义,只有当存在独立的业务逻辑或者属性的时候才需要定义. 模型类通常需要继承系统的\Think\Model类或其子类,下面是一个Home\Model\UserModel类的定义: namespace Home\Model; use Think\Model; class UserModel extends Model { } 模型类的作用大多数情况是操作数据表的,如果按照系统的规范来命名模型类的话,大多数情况下是可以自动对应数据表. 模型类的命名规则是除去表前缀的数据表名称…
控制器里面调用模型 echo D('Goods')->index(); 调用GoodsModel下index 控制器里面调用其他控制器 echo A('Goods')->index(); 调用GoodsController下的index 控制器调用视图…
对于数字字段的加减,可以直接使用 setInc() 与 setDec() 方法 ThinkPHP 内置了对统计数据(数字字段)的更新方法: setInc():将数字字段值增加 setDec():将数字字段值减少 setInc() ThinkPHP setInc() 方法将数字字段值增加. 例子: <?php public function update() { header("Content-Type:text/html; charset=utf-8"); $result = M…
getField() 使用技巧 getField() 方法是 ThinkPHP 中用来获取字段值的方法,区别于 select() 和 find() 方法,通常仅用于获取个别字段的值.但是事实上并没有那么简单,该方法的用法总结如下: 获取某个字段值 这个是 getField() 方法最基本的用法,用于获取符合条件的某个字段值. // 实例化User对象 $User = M("User"); // 获取ID为3的用户的昵称 $nickname = $User->where('id=3…
调试执行的SQL语句 在模型操作中 ,为了更好的查明错误,经常需要查看下最近使用的SQL语句,我们可以用getLastsql方法来输出上次执行的sql语句.例如: $User = M("User"); // 实例化User对象 $User->find(1); echo $User->getLastSql(); // 3.2版本中可以使用简化的方法 echo $User->_sql(); 输出结果是 SELECT * FROM think_user WHERE id =…
Call to undefined method RoleModel::query() 错误位置 FILE: H:\www\tpsmarty\shop\Lib\Model\RoleModel.class.php LINE: 17 错误的代码 class RoleModel extends Model{ //put your code here function giveAuth($auth_ids){ $sql="select auth_c,auth_a from sw_auth where a…
方法一 方法二…
<?php class FormModel extends Model { // 自动验证设置 /* * 一:自动验证 自动验证的定义是这样的:array(field,rule,message,condition,type,when,params) field:代表是数据库的字段名: rule:代表是规则: 它的值要看type的类型而定: 如果是condition 是function(callback),rule是一个函数名 condition 是in,rule是一个数组 message:代表是…
因为很熟悉DJANGO,所以对TP,要慢慢适应. 1,SQL文件 /* Navicat MySQL Data Transfer Source Server : localhost_3306 Source Server Version : 50505 Source Host : localhost:3306 Source Database : thinkphp_inaction Target Server Type : MYSQL Target Server Version : 50505 Fil…
TP 内置了对统计数据(数字字段)的更新方法: setInc():将数字字段值增加 setDec():将数字字段值减少 $User::where('id=5')->setInc('score',3); // 用户的积分加3$User::where('id=5')->setInc('score'); // 用户的积分加1$User::where('id=5')->setDec('score',5); // 用户的积分减5$User::where('id=5')->setDec('sc…
批量新增 ArrayAccess类的属性当做数组访问 插入语句 这段代码说明,User继承的Model类的isupdate属性默认是isupdate,而User::get(1)把这一字段属性更新为true,所以就转成了插入操作 更新操作…
自动验证是ThinkPHP模型层提供的一种数据验证方法,可以在使用create创建数据对象的时候自动进行数据验证. 数据验证有两种方式: 静态方式:在模型类里面通过$_validate属性定义验证规则. 动态方式:使用模型类的validate方法动态创建自动验证规则. 无论是什么方式,验证规则的定义是统一的规则,定义格式为: array( array(验证字段1,验证规则,错误提示,[验证条件,附加规则,验证时间]), array(验证字段2,验证规则,错误提示,[验证条件,附加规则,验证时间]…
ThinkPHP模型基础类提供的连贯操作方法(也有些框架称之为链式操作),可以有效的提高数据存取的代码清晰度和开发效率,并且支持所有的CURD操作. 使用也比较简单, 假如我们现在要查询一个User表的满足状态为1的前10条记录,并希望按照用户的创建时间排序 ,代码如下: $User->where('status=1')->order('create_time')->limit(10)->select(); 这里的where.order和limit方法就被称之为连贯操作方法,除了s…
之前的表单验证都是用js写的,这里也可以使用tp框架的验证.但是两者比较而言还是js验证比较好,因为tp框架验证会运行后台代码,这样运行速度和效率就会下降. 自动验证是ThinkPHP模型层提供的一种数据验证方法,可以在使用create创建数据对象的时候自动进行数据验证.验证的代码要写在模型层即Model里面. 数据验证有两种方式: 静态方式:在模型类里面通过$_validate属性定义验证规则.静态方式定义好以后其它地方都可以使用. 动态方式:使用模型类的validate方法动态创建自动验证规…
特别喜欢 ThinkPHP_3.2.3 框架的Model,结合官方手册及查看源代码,汇总出其大体用法: 核心转换方法: $this->parseWhere($where); $whereStr .= $this->parseThinkWhere($key, $val); $this->parseWhereItem($this->parseKey($key), $val); // 内连接.左连接.右连接 UserModel.class.php // SQL:( SELECT * FR…
ThinkPHP框架表单验证 对注册到test表的表单进行验证 在注册之前要对表单进行验证: 用户名非空验证,两次输入密码必须一致即相等验证,年龄在18~50之间即范围验证,邮箱格式正则验证. 自动验证是ThinkPHP模型层提供的一种数据验证方法,可以在使用create创建数据对象的时候自动进行数据验证. 数据验证可以进行数据类型.业务规则.安全判断等方面的验证操作. 数据验证有两种方式: 静态方式:在模型类里面通过$_validate属性定义验证规则. 动态方式:使用模型类的validate…
M方法和D方法的区别 ThinkPHP 中M方法和D方法都用于实例化一个模型类,M方法 用于高效实例化一个基础模型类,而 D方法 用于实例化一个用户定义模型类. 使用M方法 如果是如下情况,请考虑使用 M方法: 对数据表进行简单的 CURD 操作而无复杂的业务逻辑时只有个别的表有较为复杂的业务逻辑时,将 M方法 与实例化 CommonModel 类进行结合使用M方法 甚至可以简单看着就是对参数表名对应的数据表的操作: $User = M('User'); 使用D方法 如果是如下情况,请考虑使用…
自动验证是ThinkPHP模型层提供的一种数据验证方法,可以在使用create创建数据对象的时候自动进行数据验证. 数据验证有两种方式: 静态方式:在模型类里面通过$_validate属性定义验证规则. 动态方式:使用模型类的validate方法动态创建自动验证规则. 无论是什么方式,验证规则的定义是统一的规则,定义格式为: array( array(验证字段1,验证规则,错误提示,[验证条件,附加规则,验证时间]), array(验证字段2,验证规则,错误提示,[验证条件,附加规则,验证时间]…