php中model怎么写,thinkphp 中自定义model步骤

博主在尝试使用ThinkPHP框架时遇到Model方法找不到的问题。在Controller中调用Model的自定义方法`find_or_create`时,系统提示方法不存在。通过查找资料,发现需要将`M`方法改为`D`,给Model添加命名空间,并在Controller中引入相应命名空间才能解决。博主认为ThinkPHP的教程对于深入问题的解释不够清晰,但随着使用时间的增加,理解会逐渐深入。
摘要由CSDN通过智能技术生成

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

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

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代码:

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值