ThinkPHP中的关联模型注意点

初学ThinkPHP时,ThinkPHP中的关联模型有一处易错点,现举例如下:
需用到的表:id_elite_major和id_elite_student
代码举例如下:

复制代码 代码如下:

class EliteMajorModel extends RelationModel{
protected $_link=array(
'EliteStudent'=>array(
'mapping_type'=>HAS_MANY,  //易错点: 此处在 HAS_MANY 时常会加上 '' 容易写成 'HAS_MANY',导致出错
'class_name'=>'EliteStudent',
'foreign_key'=>'mid',
'mapping_name'=>'studentslist',
),
);
}

时间: 2014-06-13

ThinkPHP模型详解

模型定义,默认情况下,ThinkPHP的模型类是位于/Home/Model/目录之下,模型类通常需要继承系统的\Think\Model类或其子类,下面是一个Home\Model\UserModel类的定义: 文件命名遵守UserModel.class.php的方式,跟控制器的命名一样 <?php namespace Home\Model; use Think\Model; class UserModel extends Model { } 模型类的作用大多数情况是操作数据表的,如果按照系统的规范

thinkPHP模型初始化实例分析

本文实例讲述了thinkPHP模型初始化的方法.分享给大家供大家参考,具体如下: /* $dsn = 'mysql://bookman:book123@localhost:3306/Weapons'; $guns_tab = M('guns','',$dsn); $gun1 = $guns_tab ->select(); echo $guns_tab -> getLastSql(); dump($gun1); */ /* $guns_tab = M('guns'); $gun1 = $guns

ThinkPHP3.1新特性之Action参数绑定

ThinkPHP3.1版的Action参数绑定功能提供了URL变量和操作方法的参数绑定支持,这一功能可以使得你的操作方法定义和参数获取更加清晰,也便于跨模块调用操作方法.这一新特性对以往的操作方法使用没有任何影响,你也可以用新的方式来改造以往的操作方法定义. Action参数绑定的原理是把URL中的参数(不包括分组.模块和操作地址)和控制器的操作方法中的参数进行绑定.例如,我们给Blog模块定义了两个操作方法read和archive方法,由于read操作需要指定一个id参数,archive方法需

ThinkPHP中URL路径访问与模块控制器之间的关系

ThinkPHP中URL路径访问与模块控制器之间的关系是ThinkPHP程序开发中非常重要的一个环节.熟练的掌握该技巧对于进一步学习ThinkPHP起着至关重要的作用.具体分析如下: 打开控制器页面: UserAction.class.php  //路径:admin\Lib\Action\   此处的admin为新建的项目对应的目录 我们都知道在Action里的方法默认为Public属性,私有属性的方法没法访问,但定义私有属性的方法也有其意义所在. 在其中定义私有方法的意义:主要体现在,能够在这

ThinkPHP中实例Model方法的区别说明

在TP中,我们可以用下面两种方法去创建一个数据表的映射对象(我暂时用到的) 第一种:$Test = D('Test') 第二种:$Test = new Model('Test') 虽然这两种都可以对数据进行select,insert,delete,udpate操作,在数据验证上有很大的不同, 我们来看看效果,先创建一个 TestModel 复制代码 代码如下: class TestModel extends Model{ protected $_validate = array{ array('

ThinkPHP3.2.2的插件控制器功能

3.2.2版本开始支持插件控制器的调用,可以通过更加方便的URL地址访问到模块中某个插件定义的控制器. 当URL中传入插件控制器变量的时候,会自动定位到插件控制器中的操作方法. 插件控制器的变量由参数 VAR_ADDON 进行设置,默认为addon,例如我们在URL中传入: 复制代码 代码如下: http://serverName/Home/info/index/addon/SystemInfo 由于传入了addon参数,因此这里的User控制器并非原来的 复制代码 代码如下: Home/Con

浅谈thinkphp的实例化模型

thinkphp实例化模型给我们提供了三种方法 第一种 比较平常使用 就是$user=new Model('user'); //也等于 $user=M('user') 第二种就是我们如果有公共模型 我们的使用是这样的 譬如我们新建一个model   CommonModel.class.php这个公共模型 我们实例化就是这样的 复制代码 代码如下: $user=new CommonModel('user'); 这样我们既可以实例化user模型 又可以调用公共模型里边的方法 第三种就是针对我们的实例

thinkphp视图模型查询提示ERR: 1146:Table 'db.pr_order_view' doesn't exist的解决方法

本文实例讲述了thinkphp视图模型查询失败提示:ERR: 1146:Table 'db.pr_order_view' doesn't exist解决办法.分享给大家供大家参考.具体方法如下: 一.问题描述: 想用thinkphp的视图模型进行关联查询,结果出现了这样的问题(log日志记录):ERR: 1146:Table 'db.pr_order_view' doesn't exist,我就纳闷,视图模型怎么出来的sql是这样的呢,视图模型如下: 复制代码 代码如下: class Order

thinkphp3.x自定义Action、Model及View的简单实现方法

本文实例讲述了thinkphp3.x自定义Action.Model及View的实现方法.分享给大家供大家参考,具体如下: 1.在xmall/Lib/Action中创建文件TestAction.class.php class TestAction extends Action{ function index(){ $this->display("test"); } } 2.在xmall/tpl下创建default文件夹,在default下创建Test文件夹,在Test下创建test

ThinkPHP实例化模型的四种方法概述

本文讲述了ThinkPHP实例化模型的四种方法,对于ThinkPHP程序设计来说有非常重要的应用.具体如下: 1.创建一个基础模型:实例化一个系统自带的数据库操作类 Test.Model.class.php页面代码如下: class TestModel extends Model{ } UserAction.class.php页面代码如下: function test(){ $test=M('test');//表示实例化的是自带的Model类,并且传入test值表示操作的是test表 //等同于

ThinkPHP控制器间实现相互调用的方法

本文实例讲述了ThinkPHP控制器间实现相互调用的方法.分享给大家供大家参考.具体实现方法如下: ThinkPHP同一个项目里,两个控制器的方法如何相互调用呢?ThinkPHP提供了一个A(),通过它可以使控制器之间的方法相互调用,使得代码可以重复利用. 官方似乎对A()方法没有相关使用文档,现在通过一个例子来说一下如使用A()方法. 有两个控制器,ColumnsAction和NewsAction.ncatlist()是ColumnsAction的分类列表方法,现在我要在控制器NewsActi

ThinkPHP关联模型操作实例分析

通常我们所说的关联关系包括下面三种: ◇ 一对一关联 : ONE_TO_ONE , 包括 HAS_ONE 和 BELONGS_TO ◇ 一对多关联 : ONE_TO_MANY , 包括 HAS_MANY 和 BELONGS_TO ◇ 多对多关联 : MANY_TO_MANY 关联定义 数据表的关联 CURD 操作,目前支持的关联关系包括下面四种:HAS_ONE . BELONGS_TO . HAS_MANY . MANY_TO_MANY . 一个模型根据业务模型的复杂程度可以同时定义多个关联,不

ThinkPHP视图查询详解

ThinkPHP提供的视图查询应用功能十分强大,用户利用视图查询功能可以将多个数据表的字段内容按需要进行指定和筛选,组织成一个基于这些数据表的视图模型,然后就可以通过该模型直接进行多表联合查询,非常方便和简单. 例如在项目中,我们定义有三个表: user          用户基础表, user_info   用户详细信息表, dept          部门分类表 现在我们需要获取某个用户信息, 该信息要包括用户的帐号名称和相关资料与及所在部门的名称, 这时候我们可以利用视图查询进行处理. 下

thinkphp 字母函数详解T/I/N/D/M/A/R/U

1. /** * 获取模版文件 格式 资源://模块@主题/控制器/操作 * @param string $template 模版资源地址 * @param string $layer 视图层(目录)名称 * @return string */T($template='',$layer='') 2. /** * 获取输入参数 支持过滤和默认值 * 使用方法: * <code> * I('id',0); 获取id参数 自动判断get或者post * I('post.name','','htmls

浅谈PHP之ThinkPHP框架使用详解

Thinkphp框架其精髓就在于实现了MVC思想,其中M为模板.V为视图.C为控制器,模板一般是公共使用类,在涉及数据库时,一般会跟数据表同名,视图会和控制器类里的方法进行名字的一一对应. 下载及配置 官网(http://www.thinkphp.cn/)下载ThinkPHP5.0,将解压文件放在网站目录下的ATP5子目录下 默认主页:http://localhost:8099/ATP5/public/index.php 如果要隐藏index.php且服务器为Apache则需要将public\.

MySQL多表查询详解上

时光在不经意间,总是过得出奇的快.小暑已过,进入中暑,太阳更加热烈的绽放着ta的光芒,...在外面被太阳照顾的人们啊,你们都是勤劳与可爱的人啊.在房子里已各种姿势看我这篇这章的你,既然点了进来,那就由我继续带你回顾MySql的知识吧! 回顾练习资料girls库以及两张表的脚本: 链接: https://pan.baidu.com/s/1bgFrP7dBBwk3Ao755pU4Qg 提取码: ihg7 引题:笛卡尔现象,先来观看一下两张表. SELECT * FROM boys; SELECT *

mysql5.7.10开启慢查询详解

如下所示: #在/etc/my.cnf中的[mysqld]中加入如下代码: slow-query-log=On slow_query_log_file=/data/mysql/log/mysql_slow_query.log long_query_time=2 log_queries_not_using_indexes = ON 第一句是开启慢查询 第二句是用来定义慢查询日志的路径 第三句是用来定义查过多少秒的查询算是慢查询,我这里定义的是2秒 第四句就是记录下没有使用索引的query 以上这篇

使用Redis有序集合实现IP归属地查询详解

工作中经常遇到一类需求,根据 IP 地址段来查找 IP 对应的归属地信息.如果把查询过程放到关系型数据库中,会带来很大的 IO 消耗,速度也不能满足,显然是不合适的. 那有哪些更好的办法呢?为此做了一些尝试,下面来详细说明. 构建索引文件 在 GitHub 上看到一个ip2region 项目,作者通过生成一个包含有二级索引的文件来实现快速查询,查询速度足够快,毫秒级别.但如果想更新地址段或归属地信息,每次都要重新生成文件,并不是很方便. 不过还是推荐大家看看这个项目,其中建索引的思想还是很值得学

MySql学习day03:数据表之间的连接、查询详解

主键: 关键字:primary key 特点:不能为null,并且唯一. 主键分类: 逻辑主键:例如ID,不代表实际的业务意义,只是用来唯一标识一条记录(推荐) 业务主键:例如username,参与实际的业务逻辑. 主键使用方式: 方式一:     Create table t1(        Id int primary key,        Name varchar(100) ); Insert into t1 values(1,'zs'); Insert into t1 values(

angularJS实现不同视图同步刷新详解

前言 作为angularJS框架MVC中M和V的桥梁,controller在整个angularJS的web应用中有着举足轻重的作用. 通常我们可以使用单例service的方式在不同的controller里面共享数据.比如在controller1中通过点击事件修改了service里面的值,controller2中再通过点击事件去获取service中被修改的值,即实现了一个值的传递.但是,如果在controller2中没有设置点击事件,如何实现当controller1中修改了值后,controlle

MySQL多表查询详解下

好好吃饭,好好休息,听着很简单,实际落实缺失不那么容易. 继续回顾MySql的多表查询之1999语法 #二,SQL1999语法 语法: SELECT 查询列表 FROM 表1 别名 [连接类型] JOIN 表2 别名 ON 链接条件 [WHERE 筛选条件] [GROUP BY 分组] [HAVING 筛选条件] [ORDER BY 排序列表ASC|DESC] 分类(连接类型): 内连接(★): INNER 外联结 左外(★):LEFT [OUTER] 右外(★):RIGHT [OUTER] 全

Mysql| 使用通配符进行模糊查询详解(like,%,_)

通配符的分类: %百分号通配符: 表示任何字符出现任意次数 (可以是0次). _下划线通配符:表示只能匹配单个字符,不能多也不能少,就是一个字符. like操作符: LIKE作用是指示mysql后面的搜索模式是利用通配符而不是直接相等匹配进行比较. 注意: 如果在使用like操作符时,后面的没有使用通用匹配符效果是和=一致的,SELECT * FROM products WHERE products.prod_name like '1000';只能匹配的结果为1000,而不能匹配像JetPack