私はCakePHP 3.4.6 Webアプリケーションを持っています。実際には(ケーキ・コンベンションでは書かれていない)レガシー・データベース表で動作しているため、Table
とEntity
クラスを設定しようとするのではなく、すべてのSQL問合せを手作業でコーディングすることを選択しました。私はいくつかの人々がこれに同意しないだろうが、それは問題のポイントではないことを認識しています。CakePHP 3 - ORMなしで複数のデータベース接続を使用する*
私はデータベースが3つあります:app_db
、users_db
、extra_db
です。
私は各1への接続を設定したようにconfig/app.php
:私はsrc/Model/MyModel.php
にあるカスタムモデルファイルを持っている
'Datasources' => [
'default' => [], // 'app_db' credentials
'users_db' => [], // 'users_db' credentials
'extra_db' => [], // 'extra_db' credentials
];
。
namespace App\Model;
use Cake\Datasource\ConnectionManager;
class MyModel
{
protected $connection;
public function __construct()
{
$this->connection = ConnectionManager::get('default');
}
public function getData()
{
$sql = ''; // some SQL query
$stmt = $this->connection->prepare($sql);
$stmt->execute();
return $stmt->fetchAll('assoc');
}
}
それはapp_db
にマップdefault
のための接続を取得するので、これは動作します。それはデータベース(app_db
)のにクエリを実行するために使用されている例は、このように動作します。
しかし、データを取得する必要があるクエリをapp_db
から、JOINをusers_db
から実行する必要があります。
SQLを他のデータベースと通信できるようにモデルでこれを設定するにはどうすればよいですか?