Home  >  Article  >  Backend Development  >  php框架 - Thinkphp中D方法必须要有对应数据库吗?

php框架 - Thinkphp中D方法必须要有对应数据库吗?

WBOY
WBOYOriginal
2016-06-06 20:17:121798browse

之前做得一个小项目代码

<code>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());
        }
    }
}</code>

这里调用D方法的数据表 前缀_Login 是不存在的,

今天再重新做一个新的项目的时候提醒出现这个,提示数据表不存在

php框架 - Thinkphp中D方法必须要有对应数据库吗?

求解,忘了当时是搞了TP得配置还是怎么的

回复内容:

之前做得一个小项目代码

<code>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());
        }
    }
}</code>

这里调用D方法的数据表 前缀_Login 是不存在的,

今天再重新做一个新的项目的时候提醒出现这个,提示数据表不存在

php框架 - Thinkphp中D方法必须要有对应数据库吗?

求解,忘了当时是搞了TP得配置还是怎么的

模型对对应的数据表 默认是跟模型名同名的数据表

Login模型默认对应Login表,
如果不想这样对应,可以用
protected $tableName='tablename';
指定数据表名

think PHP里模型的名字必须是表名

D方法内部实现是实例化具体的数据表类

可以设置虚拟模型

<code>class LoginModel extends Model {
    protected $autoCkeckFields = false; //关闭检测字段
}</code>

不一定! 应该是D(ModelName); 默认ModelName 对应的是表名,不对应的话会报错, 但是可以通过
protected $autocheckfields = false; 来关闭自动对应, 这样你在Model里就可以 随便M(任何表名)

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn