concrete5から任意のデータベースに接続する
Posted by admin at 21:30 日時 2015/01/28
※ この記事はバージョン5.7でのやり方の解説です。バージョン5.6でのやり方は公式サイトのヘルプをご覧ください。
※ まだ5.7でのやり方として公式にドキュメントが出ていないのでブログに書いていますが、公式ドキュメントがでたら公式サイトにも掲載したいと思います。
設定ファイルに追記
concrete5では、データベースへの接続情報は /application/config/database.php に下記のように記載されています。
<?php return array( 'default-connection' => 'concrete', // デフォルトのコネクションはconcreteです 'connections' => array( 'concrete' => array( 'driver' => 'c5_pdo_mysql', 'server' => 'localhost', // データベースサーバー 'database' => 'concrete5', // データベース名 'username' => 'concrete5', // 接続ユーザー名 'password' => 'password', // 接続パスワード 'charset' => 'utf8' ) ) );
今回は、同じデータベースサーバー内のWordPressからデータを取得してみましょう。
<?php return array( 'default-connection' => 'concrete', 'connections' => array( 'concrete' => array( 'driver' => 'c5_pdo_mysql', 'server' => 'localhost', 'database' => 'concrete5', 'username' => 'concrete5', 'password' => 'password', 'charset' => 'utf8' ), // 以下に追加しました。名前はwordpressです 'wordpress' => array( 'driver' => 'c5_pdo_mysql', 'server' => 'localhost', 'database' => 'wordpress', // データベース名を変えただけですが 'username' => 'concrete5', 'password' => 'password', 'charset' => 'utf8' ) ) );
接続例
/** * 名前を指定してデータベースコネクションを作成します。 * 指定しないとデフォルトのconcreteになります */ $conn = \Database::connection('wordpress'); // WordPressの投稿を取得するSQLを実行してみます $sql = 'select * from wp_posts order by wp_posts.post_date limit 0, 10'; $stmt = $conn->query($sql); /* Concrete\Core\Database\Driver\PDOStatement */ while ($row = $stmt->fetch()) { var_dump($row); }
参考URL
上記は単純な固定のSQLの実行例ですが、プリペア文なども使えます。詳細は、concrete5が使用しているDoctrineのドキュメントを参考にしてください。
Data Retrieval And Manipulation