beforeSave не вызывается для связанных строк

У меня возникли проблемы при попытке заставить мои связанные строки выполнять функцию beforeSave, когда они вызываются объектом владельца. Для этого примера я использовал Asset и AssetVersion как в Asset hasMany Versions.

Мое намерение состоит в том, чтобы использовать beforeSave в модели AssetVersion, чтобы найти самый большой текущий номер версии с помощью команды find, а затем поместить его в базу данных. Конечно, я не могу использовать saveAssociated в контроллере и перехватывать asset_id, а затем вызывать save для модели AssetVersion, но это не кажется правильным способом сделать это. BeforeSave вызывается в Asset, но не в AssetVersion.

class AssetsController extends AppController
{
    public function add()
    {
        if (!$this->request->is('post'))
            return false;

        $md5 = md5(microtime(true));

        $data['Versions'] = array(
            array(
                'md5' => $md5,
            )
        );
        debug($data);

        $this->Asset->create();
        if ($this->Asset->saveAll($data))
        {
            die('boom');
            $this->Session->setFlash(__('The asset has been saved'));
            $this->redirect(array('action' => 'index'));
        } else {
            $this->Session->setFlash(__('The asset could not be saved. Please, try again.'));
        }
    }
}

class Asset extends AppModel
{   
    public $hasMany = array(
        'Versions' => array(
            'className' => 'AssetVersions'
        )
    );

    public function beforeSave($options = array())
    {   
        if(!isset($this->data['Asset']['created_id']))
            $this->data['Asset']['created_id'] = CakeSession::read('Auth.User.id');

        $this->data['Asset']['updated_by'] = CakeSession::read('Auth.User.id');
        return parent::beforeSave();
    }

}

class AssetVersion extends AppModel
{
    public $belongsTo = array(
        'Asset'
    );

    public function beforeSave($options = array())
    {
        debug('I dont get called at all');
        debug($this->data);
        die();
    }
}

Есть идеи, что я не правильно сделал? Я пытался отладить то, что вызывается в самом CakePHP, и до сих пор доказывал, что событие отправляется при сохранении связанных данных, но я вообще не вижу отладки в AssetVersion.

0 ответов

Другие вопросы по тегам