一:一直以来我对TP控制器和模型的误解
一直以来,我都误以为:在控制器里写一个方法(增删改查)用来组织数据,然后还需要在模型里再写一个对应的方法(增删改查)用来处理数据。
这几天在研究TP8,突然发现是自己误解了好久,看TP8的手册,控制器部分几乎没有什么内容了,增删改查都放在模型部分介绍。
真实的情况是:我们只需要在控制器里组织数据,(增删改查)的模型操作方法都是TP已经帮我们写好的,在控制器里就可以直接使用!
建一个空模型就行了
<?php
declare (strict_types = 1);
namespace app\admin\model;
use think\Model;
class Channel extends Model
{
}
在控制器里引用一下
use app\admin\model\Channel as ChannelModel;
然后就可以用了:
$model = new ChannelModel();
$model->save($data)
二:ThinkPHP8.x控制器初始化方法的使用
注意必须要在基类控制器里面集成app\BaseController只有,initialize方法才能正常使用!!!否则是不起效果的。
use app\BaseController;
class Base extends BaseController
{
public $prefix;
protected function initialize(){
//获取一下数据库前缀
$this->prefix = Config::get('database.connections.mysql.prefix');
}
}
这样操作之后:其他的继承了Base的控制器里面,都可以直接用$this->prefix来使用这个变量了,有点像整个应用的全局变量。
initialize方法的特点在于:只需要在这里写一次就行了,其他的控制器里不需要再做任何操作,所有继承了Base控制器的其他控制器,运行前都会自动触发一次这里的initialize方法。