`

thinkphp 中自定义model方法

阅读更多

最近想用thinkPHP了,这也是听同事说的,说他比较简单,拿过来试一下,看了一遍文档,比较详细。后来继续用,便遇到了这个问题:在model中添加方法,因为很多和model相关的方法用的次数多,而且应该属于model‘管辖’,所以应该写在model类里面。

按照惯例建好Model和Controller(我用的3.2),然后在Controller的某个function里面调用。下面上代码:

 

<?php 
	use Think\Model;
	class ControllerModel extends Model
	{
		public function find_or_create($ctlName){
			var_dump($ctlName);
			$condition['name'] = $ctlName;
			$cls = $this->where($condition)->find();
			if($cls){
				return $cls;
			}else{
				$data = array();
				$data['name'] = $ctlName;
				$data['fazenda_id'] =1 ;
				$id = $this -> add($data);
				return $id;
			}
		}
	}

?>

 Controller代码:

<?php
namespace Record\Controller;
use Think\Controller;
use Think\Log;

class IndexController extends Controller {

    public function sync()
    {        
        $controllerName = I('post.controller', '控制器');

        $ctlModel = M('Controller');
        $ctl = $ctlModel -> find_or_create($controllerName);
        $data = array();
        $data['ctl'] = $ctl;       
        echo json_encode($data);
    }
  
}

 上面Model的名字叫做Controller是因为这个model的意义是控制器,所以叫做了Controller。如果这样用,会出现问题:Think\Model:find_or_create方法不存在!查了一下,有三方面要改:

  • 讲M方法更改为D方法
  • 给Model增加命名空间
  • 在Controller里面use命名空间

经过以上三点就可以了,花了将近半天的时间才找到,真不容易啊。还有,感觉thinkphp里面的教程入门很简单,但是对一些深的问题,解释的很是不是很到位。可能是用的时间比较短吧。

 

分享到:
评论

相关推荐

    thinkPHP自定义类实现方法详解

    本文实例讲述了thinkPHP自定义类实现方法。分享给大家供大家参考,具体如下: 1.通过Model调用 &lt;?php /** * 积分模型 api接口 */ class ApiModel{ private $url = '...

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

    主要介绍了thinkphp3.x自定义Action、Model及View的简单实现方法,结合实例形式详细分析了thinkPHP3.x自定义模型、视图及控制器的具体步骤与相关实现技巧,需要的朋友可以参考下

    ThinkPHP3.2框架自定义配置和加载用法示例

    主要介绍了ThinkPHP3.2框架自定义配置和加载用法,结合实例形式分析了thinkPHP3.2框架使用自定义配置保存预定义数组数据相关操作技巧,需要的朋友可以参考下

    ThinkPHP中create()方法自动验证表单信息

    在控制器中使用create()方法,(返回值为true/false),会自动触发模型类中的$_validate属性(为父类Model中的方法,在子类Model中重写),在$_validate中自定义验证规则(验证规则下面会详细说明),当create()方法没有...

    ThinkPHP3.1之D方法实例详解

    D方法应该是用的比较多的方法了,用于实例化自定义模型类,是ThinkPHP框架对Model类实例化的一种封装,并实现了单例模式,支持跨项目和分组调用,调用格式如下: D(‘[项目://][分组/]模型’,’模型层名称’) 方法的...

    ThinkPHP CURD方法之field方法详解

    ThinkPHP CURD方法的field方法属于模型的连贯操作方法之一,主要目的是标识要返回或者操作的字段,可以用于查询和写入操作。 1、用于查询 在查询操作中field方法是使用最频繁的。 $Model-&gt;field('id,title,content'...

    ThinkPHP中create()方法自动验证实例

    在控制器中使用create()方法,(返回值为true/false),会自动触发模型类中的$_validate属性(为父类Model中的方法,在子类Model中重写),在$_validate中自定义验证规则(验证规则下面会详细说明),当create()方法没有...

    ThinkPHP函数详解之M方法和R方法

    2、实例化后只能调用基础模型类(默认是Model类)中的方法; 3、可以在实例化的时候指定表前缀、数据库和数据库的连接信息; D方法的强大则体现在你封装的自定义模型类有多强,不过随着新版ThinkPHP框架的基础模型...

    ThinkPHP之M方法实例详解

    D方法的强大则体现在你封装的自定义模型类有多强,不过随着新版ThinkPHP框架的基础模型类的功能越来越强大,M方法也比D方法越来越实用了。 M方法的调用格式: M(‘[基础模型名:]模型名’,’数据表前缀’,’数据库...

    cakephp-containable行为behaviour

    2:cakephp中虽然对模型的操作方法中并没有提供像上面提到的连贯方法 但是cake框架提供了一个containable行为类来更好的完善模型关联中遇到的上述问题 "&gt;1:thinkphp中通过框架提供的连贯操作Model &gt;join ‘other ...

    think-addons:ThinkPHP6插件程序包

    'autoload' =&gt; true , // 当关闭自动获取配置时需要手动配置hooks信息 'hooks' =&gt; [ // 可以定义多个钩子 'testhook' =&gt; 'test' // 键为钩子名称,用于在业务中自定义钩子处理,值为实现该钩子的插件,// 多个插件...

    ThinkPHP自动验证失败的解决方法

    //自定义Model处理 //if里面就是ThinkPHP的自动验证了. if(!$DB-&gt;create()){ $this-&gt;redirect(‘Index/Login’, ”, 3, ‘错误信息: ‘.$DB-&gt;getError().' 系统将于3秒后返回重新登陆…’); }else{ $con[...

    thinkphp5 模型实例化获得数据对象的教程

    模型对象和数据对象理解 1. 模型对象:模型类实例化后获得的对象;...object(app\index\model\Staff)#5 (28) { //数据库配置数组 [connection:protected] =&gt; array(0) { } //数据库查询对象,负责最终完成对数据

    基于生态农业的电子商务微信小程序毕业设计(论文).docx

    6.1.2.3调用自定义验证方法 20 6.1.3 模型 20 6.1.3.1Model 模型的示例 22 6.1.3.2 关联模型 22 6.1.3.3TP5 的静态调用方法和实例化调用方法 22 6.2全局异常处理 23 6.2.1实际情况下的异常处理举例 23 6.2.2在...

    Yi-CMS:Yi CMS。基于ThinkPHP,一套简单基础的企业内容商城站点管理系统,便捷企业网上推广。方便扩展,二次开发

    基于ThinkPHP,一套简单的基础的企业站系统,便捷企业网上推广。方便扩展,二次开发。内容管理,商城,UCG等模块。分离独立。 系统设计架构 1.入口index.php多应用模式 2. route控制访问接口地址,请求方法。方法内...

    Bwsaas多端SAAS平台运营系统uniapp多终端公众号,H5,小程序,PC,APP

    租户及租户应用权限)、 强大的一键CRUD生成代码(页面JS,控制器controller,模型及关联模型model)、基于ThinkPHP6及layui快速布局扩展等等特性、详细的二次开发及系统使用说明文档!让您不管是自己学习使用还是...

    Mao10CMS网站系统源码 v2.4

    Mao10CMS V2.4主要更新内容:商品模块功能增强,每个商品可自定义参数。屏蔽IP功能,可以屏蔽不受欢迎的用户IP,只要该用户登陆过的IP都会被自动保存并在执行屏蔽操作后,永久禁止登陆。另外就是进行了一些列的BUG...

    Mao10CMS网站系统源码 v2.5

    Mao10CMS V2.4主要更新内容:商品模块功能增强,每个商品可自定义参数。屏蔽IP功能,可以屏蔽不受欢迎的用户IP,只要该用户登陆过的IP都会被自动保存并在执行屏蔽操作后,永久禁止登陆。另外就是进行了一些列的BUG...

    Mao10CMS网站系统 v2.6

    Mao10CMS V2.4主要更新内容:商品模块功能增强,每个商品可自定义参数。屏蔽IP功能,可以屏蔽不受欢迎的用户IP,只要该用户登陆过的IP都会被自动保存并在执行屏蔽操作后,永久禁止登陆。另外就是进行了一些列的BUG...

Global site tag (gtag.js) - Google Analytics