3

こんにちは、cakephp でサイトを開発しています。私は2つのテーブルを持っています: Ingredient Property

テーブル間の関係は、HasAndBelongsToMany(HABTM) です。これは私のモデルです:

class Ingredient extends AppModel {
    public $name = 'Ingredient';
    public $useTable = 'ingredients';
    public $belongsTo = 'User';

    public $hasAndBelongsToMany = array (
        'Property' => array (
            'className'             => 'Property',
            'joinTable'             => 'ingredients_properties',
            'foreignKey'            => 'ingredient_id',
            'associationForeignKey' => 'property_id',
            'unique'                => false
        )
    );

}

class Property extends AppModel{
        public $name = 'Property'; 
        public $useTable = 'properties';

}

IngredientController に、このモードで試した新しいプロパティを追加する必要があります。

$this->Ingredient->Property->create();
                $this->Ingredient->Property->set('user_id',$this->Session->read('Auth.User.id'));
                $this->Ingredient->Property->set('ingredient_id',$ing['IngredientAlias']['ingredient_id']);
                if ($this->Ingredient->Property->save($this->request->data)){
                    $this->set('flash_element','success');
                    $this->Session->setFlash ('Ingrediente modificato con successo.');
                    $this->redirect(array('action'=>'edit',$alias));
                }
                else{
                    $this->set('flash_element','error');
                    $this->Session->setFlash('Errore di salvataggio activity');
                }

データベースに新しいレコードを挿入します。このモードでは、Ingredients hasMany Properties に似ていますが、正しくありません。どうすれば解決できますか?または、手動で components_properties にレコードを作成する必要がありますか?

4

2 に答える 2

1

同じことを達成するには、次のリンクを参照してください。

http://book.cakephp.org/2.0/en/models/ Saving-your-data.html# Saving-related-model-data-habtm

于 2012-09-05T06:22:04.377 に答える
1

解決策は次のとおりです。

class Ingredient extends AppModel {
    public $name = 'Ingredient';
    public $useTable = 'ingredients';
    public $belongsTo = 'User';

    public $hasAndBelongsToMany = array (
        'Property' => array (
            'className'             => 'Property',
            'joinTable'             => 'ingredients_properties',
            'foreignKey'            => 'ingredient_id',
            'associationForeignKey' => 'property_id',
            'unique'                => false
        )
    );

}

class Property extends AppModel{
        public $name = 'Property'; 
        public $useTable = 'properties';
        public $hasAndBelongsToMany = array (
        'Ingredient' => array (
            'className'             => 'Ingredient',
            'joinTable'             => 'ingredients_properties',
            'foreignKey'            => 'property_id',
            'associationForeignKey' => 'ingredient_id',
            'unique'                => false
        )
    );

}
于 2013-04-21T17:48:53.950 に答える