如何获取在相关模型中启动saveAll调用的模型

时间:2012-03-02 13:00:54

标签: cakephp cakephp-1.3

是否有可能让试图将数据保存到saveAll事务中的相关模型的Model。例如,用户有多个目标,我拨打电话;

$this->User->saveAll($data);

我可以使用一些预定义的attritbute,方法或机制在目标模型类中获取模型用户吗?

感谢您的帮助, 罗兰。

编辑: 假设用户具有图片的假设情况,具有图片模型和具有相应模型的帖子(博客)。这两个都可以评论。因此,我不是为每个模型创建单独的注释模型,而是创建一个中心注释模型。该关联可能看起来像这样;

    //In the Picture model
    var $hasMany = array(
``    'Comment' => array(
        'className' => 'Comment',
        'foreignKey' => 'picture_id',
        'conditions' => array('Comment.objectType' => 'picture')
      )`
    );

Post模型的关联将是类似的,唯一的区别是;

'conditions' => array('Comment.objectType' => 'post')

使用此结构,如果我要查询任何这些模型,将使用objectType字段从数据库表中检索其相应的注释。

如果我要这样做;

$this->Picture->saveAll($data);

,或

$this->Post->saveAll($data);

$ data数组结构良好,包含要保存的Comments部分,在保存事务期间的某个时间点,数据将通过Comment模型保存到comments表中。 我想要的是能够知道它是试图在评论模型的beforeSave方法中保存评论的图片模型,即;

//In the Comment mode
    beforeSave() {
      //Post model is trying to save a comment here
    }

1 个答案:

答案 0 :(得分:0)

使用CakePHP,如果您使用hasMany关联模型,则在控制器中可以访问该模型。

在UserModel

var $hasMany = array('Goal');

在GoalModel

function myCrazyFunc() {
    //crazy stuff happens here
}

在UsersController中

$this->Goal->myCrazyFunc();
//more stuff
$this->User->saveAll($data);