Heim  >  Artikel  >  PHP-Framework  >  So verwenden Sie das tp5-Framework zur Implementierung von Multi-Datenbank-Abfragen

So verwenden Sie das tp5-Framework zur Implementierung von Multi-Datenbank-Abfragen

王林
王林nach vorne
2020-03-04 17:56:062722Durchsuche

So verwenden Sie das tp5-Framework zur Implementierung von Multi-Datenbank-Abfragen

Vorwort:

Manchmal muss ein Managementhintergrund mehrere Datenbanken umfassen. Beispielsweise verfügen die Verwaltung von Einkaufszentren, die Verwaltung von Live-Übertragungen, die Verwaltung von Nachrichten usw. über ihre eigenen Datenbanken. Zu diesem Zeitpunkt müssen Sie eine Verbindung zu mehreren Datenbanken herstellen und diese verarbeiten. thinkphp kann mehrere Datenbankverbindungen unterstützen.

Wie gehe ich damit um?

1. Mehrere Datenbanken konfigurieren

Standardmäßig werden die Datenbankinformationen in der Datenbank.php verbunden.

<?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 lädt automatisch die Datenbank.php

(empfohlenes Tutorial: thinkphp-Tutorial)

Ein paar weitere können wir im Extraordner „Configuration“ erstellen anderer Datenbanken wie Database_mall, Database_live, Database_App usw.

2. Initialisierung

Im Modellmodul initialisieren

<?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. Verwenden Sie

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

, um Daten in anderen Datenbanken abzufragen.

Das Folgende ist der vollständige Code:

<?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;
  }
}

Weitere programmierungsbezogene Inhalte finden Sie in der Spalte Einführung in die Programmierung auf der chinesischen PHP-Website!

Das obige ist der detaillierte Inhalt vonSo verwenden Sie das tp5-Framework zur Implementierung von Multi-Datenbank-Abfragen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:jb51.net. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen