読者です 読者をやめる 読者になる 読者になる

とあるプログラマの備忘録

都内某所に住むプログラマが自分用に備忘録を残すという趣旨のブログです。はてなダイアリーから移動しました!

SamuraiFWのActiveGatewayの使用時によくつまずく場所

Samurai FWでではORマッパー的なことを結構しっかりやってくれる。
個人的にはiBatisといい勝負するくらいがんばってると思う。


でも最初に使うときにはいろいろやることがあるので、結構面倒になることがあるので、
備忘録的にここに残しておくことにする

まずはmodelを継承したclassを作成する作成箇所はお任せするが今回はfindDetailを使用してみる。
これは複数行の参照となる。内容はこんな感じ、今回はhoge/test/managerに作成してみた。
参照テーブル名はtest。

    public function findTest($dto)
    {
    	return $this->AG->findAllDetail('test',$dto);
    }

このメソッドを参照するのに一手間かかる


大根ファイルを開いて以下のように定義する

  • samurai.dicon
DateTest :
   class : hoge_test_manager


Samurai.*ファイルに記述をした場合、そのファイルと同等または下層のディレクトリが影響範囲になるため、
よく使うものは高階層においておくといいらしい。

そしたら、diconファイルの下に上記メソッドを呼び出したいactionを作成し一番最初て以下のように定義して使用する。

<?php
/**
 * [[機能説明]]
 * 
 * @package    Package
 * @subpackage Action
 * @copyright  Foo Project
 * @author     Foo Bar <foo@bar.jp>
 */
class Action_Test_Mng extends Samurai_Action
{
    public $DateTest;
    /**
     * 実行トリガー
     *
     * @access     public
     */

 public function execute()
    {
        parent::execute();

        //テスト取得
        $helpCon = $this->DateTest->getCondition();
        $helpCon->where->active = "1";
        
        //アサイン
        $this->testValue= $this->DateTest ->gets($helpCon);

        var_dump($this->testValue);
        
        return 'success';
    }
}


少し乱雑になってしまったけどこんな感じでできるらしい。

要点的には、modelを作る>diconファイルに定義>使うクラスので定義して作成する。って所だと思う


その他ActiveGateway関数
create     作成
findDetail   単一レコード参照
findAllDetail  複数レコード参照
update     更新
delete     削除


※ここに記述されている情報個人的な備忘録として作成してます。使用時は自己責任でお願いします。