素材牛VIP会员
Thinkphp中D方法必须要有对应数据库吗?
 wt***00  分类:ThinkPHP  人气:1566  回帖:10  发布于6年前 收藏

之前做得一个小项目代码

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得配置还是怎么的

讨论这个帖子(10)垃圾回帖将一律封号处理……

Lv4 码徒
风***2 站长 6年前#1

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

Lv6 码匠
tl***an CEO 6年前#2

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

Lv2 入门
高***售 JAVA开发工程师 6年前#3

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

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

Lv1 新人
km***04 JS工程师 6年前#4

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

Lv3 码奴
走***一 交互设计师 6年前#5

可以设置虚拟模型

class LoginModel extends Model {
    protected $autoCkeckFields = false; //关闭检测字段
}
Lv2 入门
15***25 PHP开发工程师 6年前#6

这个是对应的,不然就是会在页面上报错

Lv3 码奴
10***29 职业无 6年前#7

你落伍了,TP5没有D方法了,换新的吧,别在用3.2了

Lv1 新人
bt***tb 职业无 5年前#8

thinkphp5有小实例吗?

Lv10 CTO
wa***21 交互设计师 4年前#9
D方法内部实现是实例化具体的数据表类,我们用这个调用数据库!
Lv1 新人
46***74 职业无 3年前#10
我都是用3.2
 文明上网,理性发言!   😉 阿里云幸运券,戳我领取