2006年10月アーカイブ

charとvarcharとかを結合すると Unable to identify an operator とかっておこられてしまうときがあるバージョン?設定? たとえば aテーブルで idをvarchar(10) bテーブルで idをchar(5) のように定義している場合型のキャストが必要 cast(a.id as char(5)) = b.id
ethnaで2重POSTを回避するためには {form ethna_action="index_test"} {uniqid} {/form} として actionの中で if (Ethna_Util::isDuplicatePost()) { // 二重POSTの場合 $this->af->setApp('message','更新は完了しました。'); return 'common/notice'; } とするとチェックできる
mysql> UPDATE persondata SET age=age+1; UPDATE は左から右へ評価されます。たとえば、次のステートメントでは、age カラムの値がまず 2 倍にされ、その後、加算されます。 mysql> UPDATE persondata SET age=age*2, age=age+1; http://dev.mysql.com/doc/refman/4.1/ja/update.html
UNIXタイムスタンプ等を変換する場合 {$login_date|date_format:"%Y年 %m月 %d日 %H:%M"} こんな感じでsmarty上で対応できる

exportform

トラックバック(0) コメント(0)
AppObjectを使用して、フォームにDBの値を取得するサンプルアクションフォームの定義はDBと同様にしておく出来無い項目の場合は修理を追加する必要がある $company = & new Admin_CompanyMaster($this->backend,'company_id',14); $company->exportform(); これだけだ!すげー便利っぽいぞ
一行データを抜く場合のappObjectの使い方 $company = & new Admin_CompanyMaster($this->backend,'company_id',1); echo $company->get('name'); これをactionで実行するためには ethna add-app-object company_master のようにしてappObjectを作成しておく必要がある
押すボタンによって処理を切り替える場合は submitボタンのname属性にaction名を書くことで呼び出すアクションを変更できる これすげぇー便利だ!この実装大好き!いままでjavascriptとかで書くのかったるいなーと思ってたんだ

array_walk

トラックバック(0) コメント(0)
CSVとか作成するのにダブルコーテーションを各配列に付けるライブラリを持っているんだけど lib/以下にあるライブラリをContllorでincludeして Ethnaのactionの中で array_walk($w_str, 'Uti::'addW); としてみたらエラーで怒られた。 そこでgoogleで調べてみたところなんと配列で呼び出せるでわないか〜すっきり!助かりました。 で呼び方は array_walk($w_str, array('Util','addW'));
アプリを作成していると年の算出とか、金額の計算とか、日付の差とか色々ライブラリ化しているものがあると思うそんなときはプロジェクト配下にある libディレクトリに作成したファイルを置く 例えばSampleプロジェクトでライブラリファイルがUtil.phpとすると置く場所は Sample/lib/Util.phpに置いて Sample_Controllerの中で include_once('Ethna/Ethna.php'); とすることでactionでもViewでも参照できる。