php框架 - Thinkphp中D方法必须要有对应数据库吗?
程序员文章站
2022-05-27 09:41:40
...
之前做得一个小项目代码
class LoginController extends Controller {
public function login(){
$Admin = D('Login'); //实例化Admin模型
if ($Admin->create()){ //创建数据模型
$user = I('post.name');
$this->session($user);
$this->success('Login success!',"/hc_tp/Admin"); //跳转到内页面
}else {
echo $this->error($Admin->getError());
}
}
}
这里调用D方法的数据表 前缀_Login 是不存在的,
今天再重新做一个新的项目的时候提醒出现这个,提示数据表不存在
求解,忘了当时是搞了TP得配置还是怎么的
回复内容:
之前做得一个小项目代码
class LoginController extends Controller {
public function login(){
$Admin = D('Login'); //实例化Admin模型
if ($Admin->create()){ //创建数据模型
$user = I('post.name');
$this->session($user);
$this->success('Login success!',"/hc_tp/Admin"); //跳转到内页面
}else {
echo $this->error($Admin->getError());
}
}
}
这里调用D方法的数据表 前缀_Login 是不存在的,
今天再重新做一个新的项目的时候提醒出现这个,提示数据表不存在
求解,忘了当时是搞了TP得配置还是怎么的
模型对对应的数据表 默认是跟模型名同名的数据表
Login模型默认对应Login表,
如果不想这样对应,可以用
protected $tableName='tablename';
指定数据表名
think PHP里模型的名字必须是表名
D方法内部实现是实例化具体的数据表类
可以设置虚拟模型
class LoginModel extends Model {
protected $autoCkeckFields = false; //关闭检测字段
}
不一定! 应该是D(ModelName); 默认ModelName 对应的是表名,不对应的话会报错, 但是可以通过
protected $autocheckfields = false; 来关闭自动对应, 这样你在Model里就可以 随便M(任何表名)
上一篇: PHP实时显示输出_PHP教程
下一篇: webpack打包配置(详细教程)