最近想用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代码:
<?phpnamespace 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里面的教程入门很简单,但是对一些深的问题,解释的很是不是很到位。可能是用的时间比较短吧。
?