Ground Sunlight

Windowsで作る - PHPプログラミングの開発環境

ユーザ用ツール

サイト用ツール


basic-library:idiorm:1.5

差分

このページの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://en.wikipedia.org/wiki/BSD_licenses|BSD license]])+Version 1.5 ([[https://en.wikipedia.org/wiki/BSD_licenses|BSD License/2-clause]])
  
  --- //[[http://www.y2sunlight.com|y2sunlight]] 2020-03-11//  --- //[[http://www.y2sunlight.com|y2sunlight]] 2020-03-11//
行 11: 行 7:
  
 関連記事 関連記事
-  * [[basic-library:project|プロジェクトの作成 - apricot]]+  * [[basic-library:project|プロジェクトの作成 - Apricot (α版)]]
   * [[basic-library:phpdotenv:4.1|環境変数 - phpdotenv]]   * [[basic-library:phpdotenv:4.1|環境変数 - phpdotenv]]
   * [[basic-library:monolog:2.0|ログ出力 - monolog]]   * [[basic-library:monolog:2.0|ログ出力 - monolog]]
   * ORマッパー - Idiorm   * ORマッパー - Idiorm
   * [[basic-library:bladeone:3.37|テンプレートエンジン - BladeOne]]   * [[basic-library:bladeone:3.37|テンプレートエンジン - BladeOne]]
-  * [[basic-library:fast-route:1.3|リクエストルーター - fast-route]] +  * [[basic-library:fast-route:1.3|リクエストルーター - FastRoute]] 
-  * [[basic-library:whoops:2.7|エラーハンドラー - whoops]]+  * [[basic-library:league-container:3.3|DIコンテナー League/Container]] 
 +  * [[basic-library:valitron:1.4|バリデーター - Valitron]] 
 +  * [[basic-library:whoops:2.7|エラーハンドラー - Whoops]]
   * [[basic-library:php-debugbar:1.16|デバッグ出力 - php-debugbar]]   * [[basic-library:php-debugbar:1.16|デバッグ出力 - php-debugbar]]
  
行 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: 
->Idiormは複合主キーには対応していません。従って、テーブルにはサロゲートキーが必要になります。サロゲートを好まない方は他のORMをお探しください。 
  
 \\ \\
行 68: 行 63:
 パッケージの取得が終わると ''composer.json'' の ''require'' に以下が追加されます。 パッケージの取得が終わると ''composer.json'' の ''require'' に以下が追加されます。
  
-<code json composer.json>+<code javascript composer.json>
 { {
     "require": {     "require": {
行 78: 行 73:
 \\ \\
  
-===== データベース ===== 
-データソース 
-^host|localhost| 
-^user_name|sunlight| 
-^password|sunlight| 
-^database_name|sunlight_db| 
-^port|3306| 
  
 +===== テストプログラム =====
  
-userテーブル +このテストプログラムは、最初に実行した時に、SQLiteのデータベースファイル(test\var\db\sample.sqlite)を作成し、次のSQL文を実行してテスト用のテーブルを自動的に作ります。 
-<code> + 
-CREATE TABLE user( +<code sql
-  id int NOT NULL AUTO_INCREMENT+CREATE TABLE IF NOT EXISTS user( 
-  email varchar(255)+  id integer primary key autoincrement
-  name varchar(50)+  email text
-  created_at datetime, +  name text
-  PRIMARY KEY (id)+  created_at text
 ); );
-INSERT INTO user VALUES(1, 'suzuki@sample.com', 'Suzuki' , '2020-03-01 00:00:00'); +INSERT INTO user VALUES(1,'y2sunlight@sample.com','y2sunlight', datetime('now'));
-INSERT INTO user VALUES(2, 'yamamoto@sample.com', 'Yamamoto' , '2020-03-02 00:00:00')+
-INSERT INTO user VALUES(3, 'tanaka@sample.com', 'Tanaka' , '2020-03-03 00:00:00');+
 </code> </code>
  
-===== テスト =====+テスト用のコード(idiorm.php)を以下に示します。
  
 <code php idiorm.php> <code php idiorm.php>
 <?php <?php
 require __DIR__.'/../vendor/autoload.php'; require __DIR__.'/../vendor/autoload.php';
 +
 +// データベースファイルの準備
 +$db_file = __DIR__.'/var/db/sample.sqlite';
 +if (!file_exists($db_path=dirname($db_file)))
 +{
 +    mkdir($db_path,null,true);
 +}
  
 // データベース接続 // データベース接続
-ORM::configure(array( +ORM::configure("sqlite:{$db_file}");
-    'connection_string' => 'mysql:host=localhost;dbname=sunlight_db', +
-    'username' => 'sunlight', +
-    'password' => 'sunlight', +
-    'caching' => true,  // Default(false) +
-    'logging' => true,  // Default(false) +
-    'logger' => function($log_string, $query_time) { +
-    // クエリーログ +
-    }+
-    ));+
  
-// 検索 +// PDOインスタンスを取得し、Raw-SQLでDDL文を実行する(テーブル作成) 
-$users = ORM::for_table('user')->raw_query('SELECT * FROM user')->find_many();+$db = ORM::get_db(); 
 +$db->exec(" 
 +  CREATE TABLE IF NOT EXISTS user( 
 +    id integer primary key autoincrement, 
 +    email text, 
 +    name text, 
 +    created_at text 
 +  );" 
 +); 
 + 
 +// テーブルが空の時、テスト用のデータを作る 
 +$user = ORM::for_table('user')->find_one(); 
 +if ($user===false) 
 +
 +    // ORMインスタンスを使ってデータをInsert 
 +    // (上の Create Tableと同様にPDOインスタンスによるRaw-SQLでも実装可) 
 +    $user = ORM::for_table('user')->create(); 
 +    $user->email = 'y2sunlight@sample.com';           // オブジェクト風にセット 
 +    $user->set('name','y2sunlight');                  // (key,value)でセット 
 +    $user->set_expr('created_at', "datetime('now')"); // 式のセット 
 +    $user->save(); 
 +
 + 
 +// クエリの実行 
 +// find_many()はORMオブジェクトを返すが、連想配列取得したい場合はfind_array()を使う 
 +// また、>raw_query()を使えば、複雑なSQLを直接書くこともできる 
 +$users = ORM::for_table('user') 
 +  ->where_like('name', '%sun%'
 +  ->order_by_asc('name'
 +  ->find_many();
  
 // 結果出力 // 結果出力
行 127: 行 141:
 <!DOCTYPE html> <!DOCTYPE html>
 <html> <html>
-<head><title>HelloIdirom</title></head>+<head> 
 +  <title>Idirom</title> 
 +</head>
 <body> <body>
-<table> +    <table> 
-    <tr><th>id</th><th>email</th><th>name</th><th>created_at</th></tr> +    <tr> 
-    <?php foreach ( $users as $user){ ?> +        <th>id</th><th>email</th><th>name</th><th>created_at</th> 
-        <tr><td><?php echo $user['id'?></td><td><?php echo $user['email'?></td><td><?php echo $user['name'?></td><td><?php echo $user['created_at'?></td></tr>+    </tr> 
 +    <?php foreach ($users as $user){ ?> 
 +    <tr> 
 +        <td><?php echo $user->id ?></td> 
 +        <td><?php echo $user->email ?></td> 
 +        <td><?php echo $user->name ?></td> 
 +        <td><?php echo $user->created_at ?></td> 
 +    </tr>
     <?php } ?>     <?php } ?>
-</table>+    </table>
 </body> </body>
 </html> </html>
 +</code>
 +
 +上の例は、データベースにSQLiteを使用していますが、MySQL(MariaDB)を使用する場合のconfigure()は以下のようになります。
 +
 +<code php>
 +ORM::configure(array(
 +    'connection_string' => 'mysql:host=localhost;dbname=sunlight_db',
 +    'username' => 'sunlight',
 +    'password' => 'password',
 +    'caching' => true,  // Default(false)
 +    'logging' => true,  // Default(false)
 +    'logger' => function($log_string, $query_time) {
 +      // クエリーログ出力
 +    },
 +));
 </code> </code>
  
basic-library/idiorm/1.5.1584711592.txt.gz · 最終更新: 2020/03/20 22:39 by y2sunlight