2

Cakephp 2.0 で開発したサイトがあります。同じモデルに HABTM 関係を作成したいと考えています。

私は自分のモデルにこのモードで行うことを考えました:

class Product extends AppModel {
    public $name = 'Product';
    public $useTable = 'products';
    public $belongsTo = 'User';
    public $actsAs = array('Containable');

        public $hasAndBelongsToMany = array(
        'Ingredient' => array(
            'className' => 'Product',
            'joinTable' => 'ingredients_products',
            'foreignKey' => 'product_id',
            'associationForeignKey' => 'ingredient_id', 
            'unique' => true
        )
    );

} 

私の関係は正しいですか?しかし、product_id フィールドと material_id フィールドを製品テーブルに挿入する必要がありますか? また、フォームでデータを保存するにはどうすればよいですか? HABTM を使用してデータを保存する方法は知っていますが、同じテーブルに対して HABTM を実行したことはありません。

4

1 に答える 1

1

あなたの関係は良好です。あなたが書いたものは、任意の数の成分を持つことができ、成分が任意の数の製品に属することを可能にする製品モデルを作成します。

保存するときは、材料を別のモデルであるかのように扱うだけです。HABTM の保存に関する CakePHP の例は、同じモデルを 2 つの異なるモデルに関連付ける場合と同様に機能します: http://book.cakephp.org/2.0/en/models/ Saving-your-data.html 。

したがって、複数の成分を製品に保存する場合、配列構造は次のようになります。

Array(
    [0] => Array(
        Product => Array(
            id => 1
        ),
        Ingredient => Array(
            id => 18
        )
        ),
    1 => Array(
        Product => Array(
            id => 1
        ),
        成分 = > Array(
            id => 23
        )
    )
    // ...
    )

これをどのようにフォームに取り込むかはあなた次第ですが、上記のリンクで使用されているフォームの例は、これを適切に管理する必要があります。

于 2012-10-08T14:27:05.257 に答える