欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

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

程序员文章站 2022-06-06 19:30:04
...
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 '
';print_r($db);echo '
'; } public function select_() { $use=D('classone','qqqqqqqqqqqqqqqqqqqqqq','mysql://root16656:@localhost/ybdbchfjhfjjds'); $db=$use->select(); echo '
';print_r($db);echo '
'; }

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

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

回复内容:

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

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

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

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

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

所以没有覆盖不覆盖一说