内容へ移動
Ground Sunlight
Windowsで作る - PHPプログラミングの開発環境
ユーザ用ツール
ログイン
サイト用ツール
検索
ツール
文書の表示
以前のリビジョン
バックリンク
最近の変更
メディアマネージャー
サイトマップ
ログイン
>
最近の変更
メディアマネージャー
サイトマップ
トレース:
basic-library:idiorm:1.5
この文書は読取専用です。文書のソースを閲覧することは可能ですが、変更はできません。もし変更したい場合は管理者に連絡してください。
====== ORマッパー - Idiorm ====== Version 1.5 ([[https://en.wikipedia.org/wiki/BSD_licenses|BSD License/2-clause]]) --- //[[http://www.y2sunlight.com|y2sunlight]] 2020-03-11// [[basic-library:top|定番ライブラリー に戻る]] 関連記事 * [[basic-library:project|プロジェクトの作成 - Apricot (α版)]] * [[basic-library:phpdotenv:4.1|環境変数 - phpdotenv]] * [[basic-library:monolog:2.0|ログ出力 - monolog]] * ORマッパー - Idiorm * [[basic-library:bladeone:3.37|テンプレートエンジン - BladeOne]] * [[basic-library:fast-route:1.3|リクエストルーター - FastRoute]] * [[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]] サイト * https://github.com/j4mie/idiorm --- idiorm の本家 * https://idiorm.readthedocs.io/en/latest/ --- idiorm の公式ドキュメント(英語) * https://qiita.com/naga3/items/87fef230ac86aeec1eea --- idiorm の概要は分かります テストプログラムの所在 <code> {Project Folder}\test\ </code> ---- ===== idiormについて ===== 作者の言葉を借りるなら "You might think of Idiorm as a micro-ORM. (idiormはマイクロORMと考えると良いでしょう)"との事。本当に軽量なORマッパーです。選定に当たっては、Laravel5で使われている[[https://github.com/illuminate/database|Eloquent]]とどちらにするかで迷いましたが、兎に角シンプルだったので、idiormの方を選びました。また、[[https://idiorm.readthedocs.io/en/latest/|ドキュメント]]もよく完備されており学習コストも少なそうだったのも決め手の一つになりました。 作者によれば、Idiormはバージョン1.5.0の時点(2914-06-22)で機能面では完成し、その後はバグの修正による保守のみになるそうです。その意味でidiormは既に(良い意味で)枯れているORMと言えるでしょう。軽量なORMについては、今度も他の動向に注視する必要がありますが、現時点ではidiormをお薦めしたいと思います。 \\ ===== インストール ===== <code> composer require j4mie/idiorm </code> <code> Using version ^1.5 for j4mie/idiorm ./composer.json has been updated Loading composer repositories with package information Updating dependencies (including require-dev) Package operations: 1 install, 0 updates, 0 removals - Installing j4mie/idiorm (v1.5.6): Downloading (100%) Writing lock file Generating autoload files 1 package you are using is looking for funding. Use the `composer fund` command to find out more! </code> >Note: >Eclipse起動中にパッケージを取得した場合は、プロジェクト・エクスプローラー内の[プロジェクト(apricote)]を右クリックして[リフレッシュ]を選択して下さい。また、新しく取得したパッケージのインテリセンスが有効にならない場合は、プロジェクトのビルトまたはクリーン&ビルドを行ってビルドリストの更新を行って下さい。 パッケージの取得が終わると ''composer.json'' の ''require'' に以下が追加されます。 <code javascript composer.json> { "require": { "j4mie/idiorm": "^1.5" } } </code> \\ ===== テストプログラム ===== このテストプログラムは、最初に実行した時に、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,'y2sunlight@sample.com','y2sunlight', datetime('now')); </code> テスト用のコード(idiorm.php)を以下に示します。 <code php idiorm.php> <?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("sqlite:{$db_file}"); // PDOインスタンスを取得し、Raw-SQLでDDL文を実行する(テーブル作成) $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(); // 結果出力 header('Content-Type: text/html; charset=UTF-8'); ?> <!DOCTYPE html> <html> <head> <title>Idirom</title> </head> <body> <table> <tr> <th>id</th><th>email</th><th>name</th><th>created_at</th> </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 } ?> </table> </body> </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> id email name created_at 1 y2sunlight@sample.com y2sunlight 2020-03-20 13:35:09 </code>
basic-library/idiorm/1.5.txt
· 最終更新: 2020/04/18 10:51 by
y2sunlight
ページ用ツール
文書の表示
以前のリビジョン
バックリンク
文書の先頭へ