このページの2つのバージョン間の差分を表示します。
| 両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン | ||
|
basic-library:idiorm:1.5 [2020/03/20 22:39] 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: | ||
| パッケージの取得が終わると '' | パッケージの取得が終わると '' | ||
| - | < | + | < |
| { | { | ||
| " | " | ||
| 行 78: | 行 73: | ||
| \\ | \\ | ||
| - | ===== データベース ===== | ||
| - | データソース | ||
| - | ^host|localhost| | ||
| - | ^user_name|sunlight| | ||
| - | ^password|sunlight| | ||
| - | ^database_name|sunlight_db| | ||
| - | ^port|3306| | ||
| + | ===== テストプログラム ===== | ||
| - | userテーブル | + | このテストプログラムは、最初に実行した時に、SQLiteのデータベースファイル(test\var\db\sample.sqlite)を作成し、次のSQL文を実行してテスト用のテーブルを自動的に作ります。 |
| - | < | + | |
| - | CREATE TABLE user( | + | < |
| - | id int NOT NULL AUTO_INCREMENT, | + | CREATE TABLE IF NOT EXISTS |
| - | email varchar(255), | + | id integer primary key autoincrement, |
| - | name varchar(50), | + | email text, |
| - | created_at | + | name text, |
| - | PRIMARY KEY (id) | + | created_at |
| ); | ); | ||
| - | INSERT INTO user VALUES(1, 'suzuki@sample.com', | + | INSERT INTO user VALUES(1,' |
| - | INSERT INTO user VALUES(2, 'yamamoto@sample.com', | + | |
| - | INSERT INTO user VALUES(3, ' | + | |
| </ | </ | ||
| - | ===== テスト | + | テスト用のコード(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:: | ||
| + | -> | ||
| + | -> | ||
| + | | ||
| // 結果出力 | // 結果出力 | ||
| 行 127: | 行 141: | ||
| < | < | ||
| < | < | ||
| - | < | + | < |
| + | | ||
| + | </ | ||
| < | < | ||
| - | < | + | |
| - | < | + | <tr> |
| - | <?php foreach ( $users as $user){ ?> | + | |
| - | < | + | |
| + | <?php foreach ($users as $user){ ?> | ||
| + | <tr> | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| <?php } ?> | <?php } ?> | ||
| - | </ | + | |
| </ | </ | ||
| </ | </ | ||
| + | </ | ||
| + | |||
| + | 上の例は、データベースにSQLiteを使用していますが、MySQL(MariaDB)を使用する場合のconfigure()は以下のようになります。 | ||
| + | |||
| + | <code php> | ||
| + | ORM:: | ||
| + | ' | ||
| + | ' | ||
| + | ' | ||
| + | ' | ||
| + | ' | ||
| + | ' | ||
| + | // クエリーログ出力 | ||
| + | }, | ||
| + | )); | ||
| </ | </ | ||