このページの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:: | ||
+ | ' | ||
+ | ' | ||
+ | ' | ||
+ | ' | ||
+ | ' | ||
+ | ' | ||
+ | // クエリーログ出力 | ||
+ | }, | ||
+ | )); | ||
</ | </ | ||