このページの2つのバージョン間の差分を表示します。
| 両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン | ||
|
basic-library:idiorm:1.5 [2020/03/20 22:40] y2sunlight [データベース] |
basic-library:idiorm:1.5 [2020/04/18 10:51] (現在) y2sunlight [ORマッパー - Idiorm] |
||
|---|---|---|---|
| 行 1: | 行 1: | ||
| - | > 投稿中です。しばらくお待ちください。 | ||
| - | |||
| - | ---- | ||
| - | |||
| ====== ORマッパー - Idiorm ====== | ====== ORマッパー - Idiorm ====== | ||
| - | Version 1.5 ([[https:// | + | Version 1.5 ([[https:// |
| --- // | --- // | ||
| 行 11: | 行 7: | ||
| 関連記事 | 関連記事 | ||
| - | * [[basic-library: | + | * [[basic-library: |
| * [[basic-library: | * [[basic-library: | ||
| * [[basic-library: | * [[basic-library: | ||
| * ORマッパー - Idiorm | * ORマッパー - Idiorm | ||
| * [[basic-library: | * [[basic-library: | ||
| - | * [[basic-library: | + | * [[basic-library: |
| - | * [[basic-library: | + | * [[basic-library: |
| + | * [[basic-library: | ||
| + | * [[basic-library: | ||
| * [[basic-library: | * [[basic-library: | ||
| 行 37: | 行 35: | ||
| 作者によれば、Idiormはバージョン1.5.0の時点(2914-06-22)で機能面では完成し、その後はバグの修正による保守のみになるそうです。その意味でidiormは既に(良い意味で)枯れているORMと言えるでしょう。軽量なORMについては、今度も他の動向に注視する必要がありますが、現時点ではidiormをお薦めしたいと思います。 | 作者によれば、Idiormはバージョン1.5.0の時点(2914-06-22)で機能面では完成し、その後はバグの修正による保守のみになるそうです。その意味でidiormは既に(良い意味で)枯れているORMと言えるでしょう。軽量なORMについては、今度も他の動向に注視する必要がありますが、現時点ではidiormをお薦めしたいと思います。 | ||
| - | |||
| - | >Note: | ||
| - | > | ||
| \\ | \\ | ||
| 行 68: | 行 63: | ||
| パッケージの取得が終わると '' | パッケージの取得が終わると '' | ||
| - | < | + | < |
| { | { | ||
| " | " | ||
| 行 79: | 行 74: | ||
| - | ===== テスト ===== | + | ===== テストプログラム |
| + | |||
| + | このテストプログラムは、最初に実行した時に、SQLiteのデータベースファイル(test\var\db\sample.sqlite)を作成し、次のSQL文を実行してテスト用のテーブルを自動的に作ります。 | ||
| + | |||
| + | <code sql> | ||
| + | CREATE TABLE IF NOT EXISTS user( | ||
| + | id integer primary key autoincrement, | ||
| + | email text, | ||
| + | name text, | ||
| + | created_at text | ||
| + | ); | ||
| + | INSERT INTO user VALUES(1,' | ||
| + | </ | ||
| + | |||
| + | テスト用のコード(idiorm.php)を以下に示します。 | ||
| <code php idiorm.php> | <code php idiorm.php> | ||
| <?php | <?php | ||
| require __DIR__.'/ | require __DIR__.'/ | ||
| + | |||
| + | // データベースファイルの準備 | ||
| + | $db_file = __DIR__.'/ | ||
| + | if (!file_exists($db_path=dirname($db_file))) | ||
| + | { | ||
| + | mkdir($db_path, | ||
| + | } | ||
| // データベース接続 | // データベース接続 | ||
| - | ORM:: | + | ORM:: |
| - | ' | + | |
| - | ' | + | |
| - | ' | + | |
| - | ' | + | |
| - | ' | + | |
| - | ' | + | |
| - | // クエリーログ | + | |
| - | | + | |
| - | )); | + | |
| - | // 検索 | + | // PDOインスタンスを取得し、Raw-SQLでDDL文を実行する(テーブル作成) |
| - | $users = ORM:: | + | $db = ORM:: |
| + | $db-> | ||
| + | CREATE TABLE IF NOT EXISTS user( | ||
| + | id integer primary key autoincrement, | ||
| + | email text, | ||
| + | name text, | ||
| + | created_at text | ||
| + | );" | ||
| + | ); | ||
| + | |||
| + | // テーブルが空の時、テスト用のデータを作る | ||
| + | $user = ORM:: | ||
| + | if ($user===false) | ||
| + | { | ||
| + | // ORMインスタンスを使ってデータをInsert | ||
| + | // (上の Create Tableと同様にPDOインスタンスによるRaw-SQLでも実装可) | ||
| + | $user = ORM:: | ||
| + | $user-> | ||
| + | $user-> | ||
| + | $user-> | ||
| + | $user-> | ||
| + | } | ||
| + | |||
| + | // クエリの実行 | ||
| + | // find_many()はORMオブジェクトを返すが、連想配列取得したい場合はfind_array()を使う | ||
| + | // また、> | ||
| + | $users = ORM:: | ||
| + | -> | ||
| + | -> | ||
| + | | ||
| // 結果出力 | // 結果出力 | ||
| 行 105: | 行 141: | ||
| < | < | ||
| < | < | ||
| - | < | + | < |
| + | | ||
| + | </ | ||
| < | < | ||
| - | < | + | |
| - | < | + | <tr> |
| - | <?php foreach ( $users as $user){ ?> | + | |
| - | < | + | |
| + | <?php foreach ($users as $user){ ?> | ||
| + | <tr> | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| <?php } ?> | <?php } ?> | ||
| - | </ | + | |
| </ | </ | ||
| </ | </ | ||
| + | </ | ||
| + | |||
| + | 上の例は、データベースにSQLiteを使用していますが、MySQL(MariaDB)を使用する場合のconfigure()は以下のようになります。 | ||
| + | |||
| + | <code php> | ||
| + | ORM:: | ||
| + | ' | ||
| + | ' | ||
| + | ' | ||
| + | ' | ||
| + | ' | ||
| + | ' | ||
| + | // クエリーログ出力 | ||
| + | }, | ||
| + | )); | ||
| </ | </ | ||