上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

EthnaでMySQLデータベースにアクセスしてデータを取得

EthnaでのデータベースアクセスとしてPEAR::DBを使った方法がありますが、他のフレームワークと同様にO/Rマッパーも用意されていることを知ったので、試してみました。

【参考】
社長フラグ:初心者が送るEthna超入門その4「はじめてのapp-object」

●データベースを作成する
phpMyAdminなどで以下のデータベースを作成します。

・DB名:greeting
・テーブル名:greeting_word
・フィールド名:id auto_increment、word varchar(32)
・wordフィールドに「good morning」「hello」を追加

面倒な場合は以下のSQL文を流しこんでください。

CREATE DATABASE `greeting`;
CREATE TABLE `greeting`.`greeting_word` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`word` varchar(32) NOT NULL,
PRIMARY KEY (`id`)
);

INSERT INTO `greeting`.`greeting_word` (`id`, `word`) VALUES
(1, 'good morning'),(2, 'hello');



●helloethnaプロジェクトを作成
ethnaの新規プロジェクトは、add-projectオプションでつくることができます。

$ cd /Applications/XAMPP/htdocs/Ethna
$ ethna add-project helloethna



●helloethnaプロジェクトからデータベースへ接続するための設定
データベースへの接続設定は、そのプロジェクトのetcフォルダにある設定ファイルで行います。

cd helloethna/etc
$ vi helloethna-ini.php

'dsn' => 'mysql://root:mysql@localhost/greeting',
※ローカル環境なのでrootユーザー、安易なパスワード(mysql)にしています。



●データベース操作用オブジェクトを生成
helloethnaプロジェクトフォルダの中で以下のコマンドを実行します。
これで、先ほど作ったgreeting_wordテーブルに対応した操作用オブジェクトが生成されます。

ethna add-app-object greeting_word



●データベースへアクセスしてデータを取得
helloethna/app/view/Greeting.phpを編集(Greeting.phpが無い場合は、「ethna add-view Greeting」で作成)

preforward() {
 // select * from greeting_word where id=1;
 $greetingWordObj=$this->backend->getObject('greeting_word','id','1');
 // 取得したオブジェクトを配列に格納
 $greetingWord = $greetingWordObj->getNameObject();
 // 配列をアクションフォームで扱うための処理
 $this->af->setApp('greetingWord',$greetingWord );
}



●表示用テンプレートの編集
helloethna/template/ja_JP/greeting.tplを編集(無ければ、「ethna add-template greeting」で作成)

<h2>app-object練習</h2>
<ul>
 {foreach from=$app.greetingWord item=item key=key}
 <li>{$key}:{$item}</li>
 {/foreach}
</ul>



http://localhost/Ethna/helloethna/?action_greeting=trueにアクセスすると、以下のように表示されます。
app-objectサンプル
私の場合、最初「undefined action」とエラーが出たので、「ethna add-action Greeting」でアクションを作成しました。

「DBObject」ではなくて「AppObject」という名前からすると、データベース以外のものも操作できそうな感じがするのですが、扱えるのはデータベースだけなのかな?
関連記事

コメントの投稿

非公開コメント

プロフィール

星羽(榎田)

Author:星羽(榎田)
PHPエンジニアがRuby、PHPなどをいじった時の備忘録

最新記事
最新コメント
最新トラックバック
カテゴリ
スポンサードリンク
検索フォーム
RSSリンクの表示
リンク
QRコード
QR
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。