Orm
ORMはオブジェクト
関係マッピングの略です。 これは、2つのことを行います: オブジェクトにデータベースのテーブルの行をマップし、
それはあなたがそれらのオブジェクト間の関係を確立することができます。
それは
Active Record パターンに従いますが、 他のシステムに影響も受けます。
リレーション: Has Many
別のモデルに1対多の関係を指定します。対象モデルは、逆相関関係を実現するために現在のモデルへの参照 "Belongs To" を含める必要があります。
例
Model_Postと、それとhas many関係のModel_Commentがあるとします。 (そしてそれは次に、postに属しています。) Model_PostのIDは、独自のテーブルで Model_Commentインスタンスに保存されます。 postsテーブルがコメントを言及していないでしょうが、commentsテーブルがカラムpost_id (または、設定した他の何か)を持っていることを意味します。 あなたがデフォルトに保つ場合に必要なことは'commentへ Model_Userの静的プロパティ$_has_manyを追加するだけです:
protected static $_has_many = array('comments');
以下はhas-manyのリレーションを確立し、切断のための例:
// 両方のメインと関連オブジェクトをnewする:
$post = new Model_Post();
$post->comments[] = new Model_Comment();
$post->save();
// 両方のメインと関連オブジェクトがすでに存在しています。
$post = Model_Post::find(1);
$post->comments[6] = Model_Comment::find(6); // それを割り当てるcomments[6]が必要ですが、推奨されていません。
$post->save();
// 上に確立された関係を切断する。
$post = Model_Post::find(1);
unset($post->comments[6]);
$post->save();
デフォルト値を持つ完全な設定例
// 多くのコメントを持つModel_Postで
protected static $_has_many = array(
'comments' => array(
'key_from' => 'id',
'model_to' => 'Model_Comment',
'key_to' => 'post_id',
'cascade_save' => true,
'cascade_delete' => false,
)
);