データベースのテーブルをモデルによって簡単に操作します。
以下が最小構成のモデルです。「テーブル名.asp」で作成し、テーブル名の一文字目を大文字にして以下を小文字にしたものをクラス名とします。
user.asp
Class User
Public parent
Public Sub Class_Initialize()
Set Me.parent = New Model
With Me.parent
.SetChild Me
End With
End Sub
End Class
フレームワークから呼ばれるconfig_models関数内でモデルを登録します。
config.asp
<%
Sub config_database(ByRef db)
db.add "default", "dsn=db;uid=user;pwd=pass;", DB_TYPE_MYSQL
db.add "pg", "dsn=pgdb;uid=user;pwd=pass;", DB_TYPE_POSTGRESQL
db.add "sqlsv", "dsn=sqlsvdb;uid=user;pwd=pass;", DB_TYPE_SQLSERVER
End Sub
Sub config_models(ByRef c)
c.AddModel "user.asp", "User", "user", null, null
c.AddModel "member.asp", "Member", "member", null, "pg"
c.AddModel "profile.asp", "Profile", "profile", null, "sqlsv"
End Sub
%>
モデルはコントローラにて呼び出します。以下のように呼び出します。
c.m("user").function()
find(condition, order, limit, group)
テーブルの中から指定されたものを配列として取得します。
Set results = c.m("user").find("id=1", "age DESC")
findone(condition, order)
テーブルの中からconditionとorderで指定されたものを先頭の一つだけ取得します。
Set result = c.m("user").findone("id=1", "age DESC")
findquery(sql, condition, order, limit, group)
リレーションを使用したい場合はこちらを利用します。適合したレコードを配列にして取得します。sqlにはWHEREより前のクエリ文を指定します。
sql = "SELECT user.*, office.name FROM user"
sql = sql & " LEFT JOIN user.office_id=office.id"
Set results = c.m("user").findquery(sql, "age=24", "age DESC")
getcount(condition, limit)
テーブルの中のconditionとlimitで当てはまる要素の数を取得します。
count = c.m("user").getcount("id=1", "10")
insert(datas)
キーに要素名を指定して値を入れた配列を指定すると、その通りにINSERTを行います。
Set data = CreateDictionary()
data.Add "name", "山田"
data.Add "email", "yamada@example.com"
c.m("user").insert(data)
update(datas)
キーに要素名を指定して値を入れた配列を指定すると、その通りにUPDATEを行います。モデルのメンバ変数id(デフォルトは”id”)と同じキーを見つけ、自動的にその場所をUPDATEします。 idが見つからなかった場合はfalseを返し処理を中止します。
Set data = CreateDictionary()
data.Add "id", 1
data.Add "name", "山田"
data.Add "email", "yamada@example.com"
c.m("user").update(data)
updateby(datas, condition)
updateの様に自動的に条件を指定するのではなく、明示的にconditionで条件を指定できます。
Set data = CreateDictionary()
data.Add "name", "山田"
data.Add "email", "yamada@example.com"
c.m("user").updateby(data, "age=25")
del(condition)
conditionで指定されたレコードを削除します。
c.m("user").del("age=25")
query(sql)
直接sqlにクエリを送信します。テーブル名は自動的には設定されませんので完全なクエリを指定します。
GetLastInsertId()
最後に挿入したIDを返します。
escape(str)
文字列をクエリ用にエスケープします。
validate(datas) validatemsg(datas) GetValidateError()
これらはバリデート用関数です。詳しくはバリデートのマニュアルをご覧下さい。
id
idで指定された値(デフォルト:“id”)でテーブルの主要な要素を指定します。update関数などで使用されます。
connName
connNameで指定された(デフォルト:“default”)データベース接続を使用してクエリを実行します。
table
何も指定されていない時(デフォルト)はファイル名のデータベースを自動的に指定します。これを設定すると、指定されたテーブルにアクセスするようになります。
controller
コントローラを参照できます。