thinkphp5 - thinkPHP 是不是 D() model.class 和 Controller.class 里数据库参数的优先级问题.

查看:183
本文介绍了thinkphp5 - thinkPHP 是不是 D() model.class 和 Controller.class 里数据库参数的优先级问题.的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

model:

class classoneModel extends Model
{
    protected $trueTableName = '';    //前缀+表名;
    protected $dbName = 'ybdbcjd';    //库名,也可以从配置文件,或者 D() 参数设置;
}

Controller:

public function select_()
{
    $use=D('classone','','mysql://root16656:@localhost/ybdbchfjhfjjds');
    $db=$use->select();
    echo '<pre>';print_r($db);echo '</pre>';
}

public function select_()
{
    $use=D('classone','qqqqqqqqqqqqqqqqqqqqqq','mysql://root16656:@localhost/ybdbchfjhfjjds');
    $db=$use->select();
    echo '<pre>';print_r($db);echo '</pre>';
}

Controller这个库名ybdbchfjhfjjds,是我乱换的,按理说,应该出错,但是居然成功了!可以正常搜索到数据,所以说,库没有被覆盖,依然是 model 的库,
而下面的例子,前缀我写了个qqqqqqqqqqqqq,就搜不到数据了,

请问这个什么时候会被覆盖,什么时候不被覆盖?

解决方案

因额为D函数只有两个参数 第一个参数是资源地址,第二个是模型层名称
你把mysql连接放在第三个空参数上了 当然不会生效

mysql链接参数是M函数里面的第三个参数。。

所以没有覆盖不覆盖一说

这篇关于thinkphp5 - thinkPHP 是不是 D() model.class 和 Controller.class 里数据库参数的优先级问题.的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆