このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン 次のリビジョン 両方とも次のリビジョン | ||
basic-library:idiorm:1.5 [2020/03/20 16:01] y2sunlight [テスト] |
basic-library:idiorm:1.5 [2020/03/28 10:42] y2sunlight [テストプログラム] |
||
---|---|---|---|
行 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: | ||
行 68: | 行 64: | ||
パッケージの取得が終わると '' | パッケージの取得が終わると '' | ||
- | < | + | < |
{ | { | ||
" | " | ||
行 78: | 行 74: | ||
\\ | \\ | ||
- | ===== データベース ===== | ||
- | データソース | ||
- | ^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: | 行 142: | ||
< | < | ||
< | < | ||
- | < | + | < |
+ | | ||
+ | </ | ||
< | < | ||
- | < | + | |
- | < | + | <tr> |
- | <?php foreach ( $users as $user){ ?> | + | |
- | < | + | |
+ | <?php foreach ($users as $user){ ?> | ||
+ | <tr> | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
<?php } ?> | <?php } ?> | ||
- | </ | + | |
</ | </ | ||
</ | </ | ||
</ | </ | ||
- | ===== 結果 | + | 上の例は、データベースにSQLiteを使用していますが、MySQL(MariaDB)を使用する場合のconfigure()は以下のようになります。 |
+ | |||
+ | <code php> | ||
+ | ORM:: | ||
+ | ' | ||
+ | ' | ||
+ | ' | ||
+ | ' | ||
+ | ' | ||
+ | ' | ||
+ | // クエリーログ出力 | ||
+ | }, | ||
+ | )); | ||
+ | </ | ||
+ | |||
+ | === 実行結果 | ||
< | < | ||
- | id email | + | id email name created_at |
- | 1 suzuki@sample.com Suzuki | + | 1 y2sunlight@sample.com |
- | 2 yamamoto@sample.com Yamamoto | + | |
- | 3 tanaka@sample.com Tanaka | + | |
</ | </ |