1

もっとプラグインをチェックしたいモデルがあります。プラグインが読み込まれている場合は、プラグインのモデルを man モデルにアタッチします。私はこの方法を使用していますか?しかし、モデルとアクションの結果は異なります。プラグイン チェック用にバインドするためのコンストラクトよりも優れた別の方法です。

class Comment extends AppModel {

/**
 * @see Model::$belongsTo
 */
    public $belongsTo = array(
        'Content' => array(
            'className' => 'Content',
            'foreignKey' => 'object_id',
            'conditions' => array(
                'Comment.object_id = Content.id',
            )
        ),
    );

/**
 * @see Model::__construct
 */
    public function __construct($id = false, $table = null, $ds = null) {
        // parent
        parent::__construct($id, $table, $ds);

        // check for newsstudio
        if (CakePlugin::loaded('NewModel')) {
             $this->bindModel(
                array('belongsTo' => array(
                    'NewModel' => array(
                        'className' => 'NewModel.NewModel',
                        'foreignKey' => 'object_id',
                        'conditions' => array(
                            'Comment.object_id = NewModel.id',
                        )
                    )
                )
            ));
        }

        var_dump($this->belongsTo); // correct! NewModel added to blongsto
    }
}

// but in action during use. Plugin loaded but 
var_dump($this->Comment->belongsTo); // incorrect! just `Content` added
4

1 に答える 1

0

__construct でそれを行っていることを考えると$belongsTo、追加のメソッド呼び出しを行っていないため、親を呼び出す前にプロパティに追加するだけで、CPU サイクルを節約できます。

class Comment extends AppModel {

/**
 * @see Model::$belongsTo
 */
    public $belongsTo = array(
        'Content' => array(
            'className' => 'Content',
            'foreignKey' => 'object_id',
            'conditions' => array(
                'Comment.object_id = Content.id',
            )
        ),
    );

/**
 * @see Model::__construct
 */
    public function __construct($id = false, $table = null, $ds = null) {
        // check for newsstudio
        if (CakePlugin::loaded('NewModel')) {
            $this->belongsTo['NewModel'] = array(
                        'className' => 'NewModel.NewModel',
                        'foreignKey' => 'object_id',
                        'conditions' => array(
                            'Comment.object_id = NewModel.id',
                        )
                    );
        }
        parent::__construct($id, $table, $ds);
    }
}
于 2012-07-05T12:00:28.997 に答える