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 中自定义model方法
-
总结ThinkPHP中模版标签的使用方法
-
DB2生成表model与mybatis的mapper中的常用方法 博客分类: mybatis db2mybatis
-
php自定义函数br2nl实现将html中br换行符转换为文本输入中换行符的方法【与函数nl2br功能相反】
-
thinkphp自定义权限管理之名称判断方法
-
ThinkPHP中create()方法自动验证实例
-
ThinkPHP中create()方法自动验证表单信息
-
ThinkPHP中Widget扩展的两种写法及调用方法详解
-
thinkPHP5 tablib标签库自定义方法详解
-
解析 thinkphp 框架中的部分方法