thinkphp链接其它数据库使用facade静态代理

最近Bose让修改之前做的一个项目,全部是一行一行敲出来的,现在是想用一下thinkcmf这个框架,但是又不想去修改相互的数据库结构,毕竟哪也是自己的心血。所以就想着在不改变原框架的情况下,获取到我之前数据库的信息。而且也还要想助手函数那样简单操作。度娘了一下,还是觉得用facade静态代理这个方法比较好。

第一步

首先,创建一个common文件夹,在里面创建一个commonother.php文件,因为我前后端都会用到,所以就先这么放着吧!然后将公共的业务逻辑放敲进去;

namespace app\common;
use think\db;
class Connectother
{
    //测试专用
    public function hello($name="abc"){
        return 'hello'.$name;
    }

    /*
    * 链接其它数据库
    * */
    public function connect(){
        $db = Db::connect([
            'type'            => 'mysql',
            'hostname'        => 'localhost',
            'database'        => 'mygrab',
            'username'        => 'root',
            'password'        => 'root',
            'hostport'        => '3306',
            'charset'         => 'utf8',
        ]);
        return $db;
    }

    /**
    创建链接方法
     */

    public function con($dataname){
        $data =$this->connect()->table($dataname);
        return $data;
    }
}

第二步

在app目录下创建一个facade文件夹,在里面创建一个commonother.php文件,再把代码敲进去

<?php
namespace app\facade;
use think\facade;

class Connectother extends facade
{
    protected static  function  getFacadeClass()
    {
        return '\app\common\Connectother';
    }
}

第三步

在需要的点将facade类引入,代码敲进去

<?php
namespace app\grab\controller;
use cmf\controller\AdminBaseController;
use app\facade\Connectother as con; //一定要引入类文件

class AdminShowdataController extends AdminBaseController
{
    public function showdata()
    {
        $datas =con::con('allshow')->limit(0,5)->select();  //好了,这就可以看见数据了
        var_dump($datas);
        return $this->fetch();
    }

}

最开始的时候建议先试一下hello()方法,看是不是能正常,然后再去调用其他方法。
好了,在相互不影响数据库结构的情况下,完成了整合。完美

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值