Zend_Db_Tableを継承したクラスを定義する。
対象となるテーブルが規約にクラス名と同じであり、主キーがシーケンスのように自動インクリメントすキーを持つテーブルであれば、クラス定義や具象クラスを利用するだけでで使用できる。
--------テーブル例--------
CREATE TABLE HOGE
(
 ID SERIAL NOT NULL UNIQUE,
 NAME TEXT,
 PRIMARY KEY (ID)
) ;
CREATE TABLE HOGECHILD
(
 CID SERIAL NOT NULL UNIQUE,
 PARENT_ID INTEGER NOT NULL REFERENCES  HOGE,
 NAME VARCHAR(10) NOT NULL,
 PRIMARY KEY (CID)
) 
--------ここまで--------
--------コード例--------
class Hoge extends Zend_Db_Table_abstract{
} 
$table=new Hoge();
$result=$table->find(1);//主キーによる検索
-------ここまで---------
(クラスを定義しない方法 1.9以上)
--------コード例--------
$table = new Zend_Db_Table('hoge');
-------ここまで---------
(テーブル名をクラス名と分ける場合)
--------コード例--------
class Hoge extends Zend_Db_Table_Abstract{
 protected $_name="hoge";
} 
-------ここまで---------
(主キーが自動インクリメントするキーの場合)
--------コード例--------
class Hoge extends Zend_Db_Table_Abstract{
 protected $_sequence=true;
} 
-------ここまで---------
(主キーが自然キーの場合)
--------コード例--------
class Hoge extends Zend_Db_Table_Abstract{
 protected $_sequence=false;
} 
-------ここまで---------
(プラリマリーキーを指定する場合)
--------コード例--------
class Hoge extends Zend_Db_Table_Abstract{
 protected $_primary="id";
 protected $_sequence=true;
} 
-------ここまで---------
テーブル間の関係(リレーション)をクラスに定義しておくと、Zend_Db_Rowクラスから、親テーブルや子テーブルへのアクセスが簡単に利用できる。
テーブルに親、子供テーブルが存在する場合は、親、子に対する関係を記述する。
(従属するテーブルが存在する場合)
--------コード例--------
class Hoge extends Zend_Db_Table_Abstract{
 protected $_sequence=true;
 //テーブル名ではなく、Zend_Db_Tableを継承したクラス名を記述する
 protected $_dependentTables=array(
   'HogeChild'
 );
} 
-------ここまで---------
(親テーブルが存在する場合)
--------コード例--------
class HogeChild extends Zend_Db_Table_Abstract{
 protected $_sequence=true;
 //refTableClassの要素はテーブル名ではなく、Zend_Db_Tableを継承したクラス名を記述する
    protected $_referenceMap=array(
        'Rule1'=>array(
            'columns'=>'parent_id',
            'refTableClass'=>'Hoge',
            'refColumns'=>'id'
         )
    );} 
-------ここまで---------
0 件のコメント:
コメントを投稿