Maison  >  Article  >  cadre php  >  Comment utiliser le framework tp5 pour implémenter des requêtes multi-bases de données

Comment utiliser le framework tp5 pour implémenter des requêtes multi-bases de données

王林
王林avant
2020-03-04 17:56:062722parcourir

Comment utiliser le framework tp5 pour implémenter des requêtes multi-bases de données

Avant-propos :

Parfois, une formation en gestion doit impliquer plusieurs bases de données. Par exemple, la gestion des centres commerciaux, la gestion des diffusions en direct, la gestion des messages, etc., ils ont tous leurs propres bases de données. À ce stade, vous devez vous connecter à plusieurs bases de données et les traiter. thinkphp peut prendre en charge plusieurs connexions à des bases de données.

Comment y faire face ?

1. Configurer plusieurs bases de données

Par défaut, les informations de la base de données dans database.php seront connectées.

<?php
// +----------------------------------------------------------------------
// | ThinkPHP [ WE CAN DO IT JUST THINK ]
// +----------------------------------------------------------------------
// | Copyright (c) 2006~2016 http://thinkphp.cn All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | Author: liu21st <liu21st@gmail.com>
// +----------------------------------------------------------------------
return [
  // 数据库类型
  &#39;type&#39;      => &#39;mysql&#39;,
  // 服务器地址
  &#39;hostname&#39;    => &#39;&#39;,
  // 数据库名
  &#39;database&#39;    => &#39;&#39;,
  // 数据库用户名
  &#39;username&#39;    => &#39;&#39;,
  // 数据库密码
  &#39;password&#39;    => &#39;&#39;,
  // 数据库连接端口
  &#39;hostport&#39;    => &#39;3306&#39;,
  // 数据库编码默认采用utf8
  &#39;charset&#39;     => &#39;&#39;,
  // 数据库表前缀
  &#39;prefix&#39;     => &#39;&#39;
];

tp5 chargera automatiquement database.php

(tutoriel recommandé : tutoriel thinkphp)

Nous pouvons en créer quelques autres dans le dossier supplémentaire Configuration d'autres bases de données, telles que Database_mall, Database_live, Database_app, etc.

2. Initialisation

Initialiser dans le module modèle

<?php
namespace app\admin\model;
use think\Model;
use think\Db;
class LiveRecharge extends Model
{
  protected $db_app;
  function __construct()
  {
    $this->db_app = Db::connect(&#39;database_app&#39;);
  }
}

3. Utilisez

$this->db_app->table(&#39;order&#39;)->select();

pour interroger des données dans d'autres bases de données.

Ce qui suit est le code complet :

<?php
namespace app\admin\model;
use think\Model;
use think\Db;
class LiveRecharge extends Model
{
  protected $db_app;
  function __construct()
  {
    $this->db_app = Db::connect(&#39;database_app&#39;);
  }
  // 获取分页
  public function getList($customer_id = &#39;&#39;,$nickname = &#39;&#39;,$paytime = &#39;&#39;,$pagesize = &#39;&#39;)
  {
    $pagesize = $pagesize && $pagesize > 0 ? $pagesize : config(&#39;default_page_size&#39;);
    $where = array();
    $where[&#39;o.type&#39;] = 3;
    if ($customer_id) {
      $where[&#39;o.uid&#39;] = $customer_id;
    }
    if ($nickname) {
      $where[&#39;c.NickName&#39;] = [&#39;like&#39;,&#39;%&#39;.$nickname.&#39;%&#39;];
    }
    if ($paytime) {
      $where[&#39;o.addtime&#39;] = array([&#39;>&#39;,$paytime.&#39; 00:00&#39;], [&#39;<&#39;,$paytime.&#39; 23:59&#39;]);
    }
    $result = $this->db_app->table(&#39;order&#39;)
      ->alias(&#39;o&#39;)
      ->where($where)
      ->join(&#39;customer c&#39;,&#39;o.uid = c.Id&#39;)
      ->field(&#39;o.*,c.NickName as nickname&#39;)->paginate($pagesize,false,[
        &#39;query&#39; => [
          &#39;customer_id&#39;=>$customer_id,
          &#39;nickname&#39;=>$nickname,
          &#39;paytime&#39;=>$paytime
        ]
      ]);
    $page = $result->render(); // 分页
    $data = $result->all(); // 数据
    foreach ($data as $k=>$v) {
      $data[$k][&#39;diamond&#39;] = intval($v[&#39;money&#39;])*10;
    }
    //    dump($this->db_app->getLastSql());
    $total_diamond = $this->db_app->table(&#39;order&#39;)->where(&#39;type&#39;,3)->sum(&#39;money*10&#39;);
    $outData[&#39;page&#39;] = $page;
    $outData[&#39;data&#39;] = $data;
    $outData[&#39;total_diamond&#39;] = $total_diamond;
    return $outData;
  }
}

Pour plus de contenu lié à la programmation, veuillez faire attention à la colonne Introduction à la programmation sur le site Web PHP chinois !

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer