きまブログ

2022-12から再開しました。

FuelPHPでデータベース接続テスト - MySQL編

実は、
【備忘録】PostgreSQL & phpPgAdmin のインストール (ubuntu14) - きまブログ
FuelPHPでデータベース接続テスト - PostgreSQL編 - きまブログ
で紹介した方法だと、次のステップ

$ oil generate model ...

で生成したデータベース構築のマイグレーションファイルで、
うまくPostgreSQLへテーブル生成ができないことがわかり、
急遽、MySQLへ路線変更しますw


※ これは、ボクの技量のせいではなく、対応してないらしいです。

MySQLphpMyAdminのインストール&設定

MySQLのインストール
$ sudo aptitude update
$ sudo aptitude search mysql
$ sudo aptitude install mysql-server

aptitudeでsearchしてるのは、正確なパッケージ名を確認するためです。
→ 途中、TUI (text user interface)で、rootユーザーのパスワードを要求される。
 (PostgreSQLでいうところのpostgresユーザーだろう。。)

phpMyAdminのインストール
$ sudo aptitude search phpmyadmin
$ sudo aptitide install phpmyadmin

→ 途中、TUIで、apache2 or httplightの選択。もちろんapache2
→ 途中、データベースの設定するか?と聞かれたので、No


プロンプトが戻ってくると、apache2はリロードされていたので、
https://localhost/phpmyadmin/へアクセスしてみると。。できてる。。
phpPgAdminとは違い、親切設計だな。。

データベース(MySQL)の準備

基本的に、PostgreSQLの時と同様の作業をします。


phpMyAdmin操作なので、詳しく説明しなくても、
だいたい大丈夫かと思います。


1. phpMyAdminからMySQLのrootユーザーでログインする。
2. 適当な名前のMySQLユーザーを作成する。
 (とりあえず権限は、全部チェックw)
3. 一旦、phpMyAdminをログアウトし、先ほど作ったユーザー名で再ログインする。
4. データベース fuel_dev を作成し、カラムを作り、テスト用のデータを入れておきます。

FuelPHPの準備 - MySQL

db.phpの設定 - MySQL

db.phpは、FuelPHPがデータベースへ接続する時に使う設定情報で、
基本的な情報は、/fuel/core/config/db.php が反映され、
上書きしたい情報を、/fuel/app/config/development/db.php へ書き込みます。
※ 基本的にdevelopment 環境で開発するので、とりあえずココに書き込んでおきます。

/fuel/app/config/development$ cat db.php 
<?php
/**
 * The development database settings. These get merged with the global settings.
 */

return array(
  'default' => array(
    'connection'  => array(
      'dsn'        => 'mysql:host=localhost;dbname=fuel_dev',
      'username'   => 'user_name',
      'password'   => 'user_password',
    ),
  ),
);

ポイントは、ないですw
いたって、スムーズで、余計な事は各必要がなさそう。。


やっぱ、MySQLが基本みたい。。

実行結果

いままでテストで作ってきたコントローラーのメソッドに、
こんな感じでデータベースのテーブル test_tableの全レコードを読み込むようにして、
結果の配列をvar_dump()で全部出力するようにしてみると。。

  public function action_dbtest()
  {
    $query = DB::select()->from('test_table')->execute();
    var_dump($query);
  }


PostgreSQLで実行した時と同じように表示できました。

identifierがバッククオートになってます。

object(Fuel\Core\Database_Result_Cached)#23 (5) {
  ["_query":protected]=>
  string(26) "SELECT * FROM `test_table`"
  ["_result":protected]=>
  array(2) {
    [0]=>
    array(2) {
      ["no"]=>
      string(1) "1"
      ["name"]=>
      string(5) "text1"
    }
    [1]=>
    array(2) {
      ["no"]=>
      string(1) "2"
      ["name"]=>
      string(5) "text2"
    }
  }
  ["_total_rows":protected]=>
  int(2)
  ["_current_row":protected]=>
  int(0)
  ["_as_object":protected]=>
  bool(false)
}


というわけで、次回こそ、oil generateコマンドでModelのコード自動生成?