欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

thinkphp 中自定义model方法

程序员文章站 2024-03-24 20:51:40
...

最近想用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