[Web]INTER-MediatorとSQLite | Cocoa練習帳

[Web]INTER-MediatorとSQLite

使えるデータベースはSQLiteのみのサイトをINTER-Mediatorで構築してみる。




ツールとして、Coda2とDiet Codaを使ってみたのだが、iPad miniでPHPが編集できるなんて、素晴らしい世の中になったものだ。




SQLiteのデータベースファイルは、事前に生成した物をサイトにアップする事にしたので、スキーム・ファイルの設計が必要だ。




CREATE TABLE person



);
CREATE UNIQUE INDEX person_id ON person (id);
 
INSERT INTO person(id,membership_number,name) VALUES (1,'012345','Yukio Murakami');
INSERT INTO person(id,membership_number,name) VALUES (2,'000002','Someone');
INSERT INTO person(id,membership_number,name) VALUES (3,'000003','Anyone');
 
CREATE TABLE attendance




);
CREATE UNIQUE INDEX attendance_id ON attendance (id);
CREATE INDEX attendance_person_id ON attendance (person_id);
 
INSERT INTO attendance (person_id,class_name,date) VALUES (1,'General','2013-1-6');
INSERT INTO attendance (person_id,class_name,date) VALUES (1,'General','2013-1-11');
INSERT INTO attendance (person_id,class_name,date) VALUES (1,'Special','2013-1-12');



スキーム・ファイルの名前は、rollbook_schema_sqlite.txtとした。
次は、データベースファイルを生成。




$ mkdir db
$ mkdir db/im
$ sudo sqlite3 -init rollbook_schema_sqlite.txt db/im/rollbook.sq3

sqlite> .quit
$ sudo chown _www db/im
$ sudo chown _www db/im/rollbook.sq3



定義ファイルは以下のとおり。




<require_once ('INTER-Mediator/INTER-Mediator.php');
 
IM_Entry(
    array(
        array(
            'records' => 1,
            'paging' => true,
            'name' => 'person',
            'key' => 'id',
            'query' => array( /* array( 'field'=>'id', 'value'=>'5', 'operator'=>'eq' ),*/),
            'sort' => array(array('field' => 'id', 'direction' => 'asc'),),
            'repeat-control' => 'insert delete',
        ),
        array(
            'name' => 'attendance',
            'key' => 'id',
            'relation' => array(
                array('foreign-key' => 'person_id', 'join-field' => 'id', 'operator' => '=')
            ),
            'repeat-control' => 'insert delete',
        ),
    ),
    array(
        'formatter' => array(),
        'aliases' => array(
            'attendanceid' => 'attendance@person_id@value',
            'attendancename' => 'attendance@name_person@innerHTML',
        ),
    ),
    array(
        'db-class' => 'PDO',
        'dsn' => 'sqlite:/それぞれの環境のパスを記述/db/im/rollbook.sq3',
    ),
    0
);
 
?>



実は、第二引数のaliasesに何を指定したらいいのか分かっていない。nullを指定すると上手く動かなかったので、サンプルを見よう見まねで真似た。




ページファイルは、Amebaブログではエラーになったので掲載していない。あしからず。




上手く動いているようだ。




web




今回、サイト側の作業はCoda2を使ったのだが、便利だね!




coda





関連情報
INTER-Mediator



【Cocoa練習帳】
http://www.bitz.co.jp/weblog/

http://ameblo.jp/bitz/(ミラー・サイト)

エレガントなWeb開発・美しいコードCODA入門/技術評論社
¥2,604
Amazon.co.jp