2015-04-24 6 views
2

У меня есть отношения, установленные на модели с primaryKey, установленной в 'Document.guid', вместе с этим у меня есть связанная модель DocumentVersion.CakePHP с выделением условных обозначений

class Document extends DocumentAppModel { 

public $hasMany = array( 
    'DocumentVersion' => array(
     'className' => 'DocumentVersion', 
     'foreignKey' => false, 
     'finderQuery' => 'SELECT * FROM document_versions as `DocumentVersion` WHERE `DocumentVersion`.`document_guid` = {$__cakeID__$} ORDER BY `DocumentVersion`.`version` DESC LIMIT 1' 
    ) 
); 

}

class DocumentVersion extends DocumentAppModel { 
    public $belongsTo = array(
     'Document' 
    ); 
} 

Когда я пытаюсь и использовать $ this-> Document-> SaveAll() это только сохраняет данные документа и не связанных данных. По моему мнению, это имеет какое-то отношение к тому факту, что я не использую соглашения cakephp, чтобы сделать свою связь.

Моя структура данных

  $filtered[] = array(
       'Document' => array(
        'guid' => $upload['guid'], 
        'database_revision' => Configure::read('Settings.LocalDataBaseRevision') 
       ), 
       'DocumentVersion' => array(
        array(
         //'guid' => $upload['guid'], 
         'parent_guid' => (isset($upload['parent_guid'])) ? $upload['parent_guid'] : null, 
         'document_type_id' => $upload['type'], 
         'owner' => $upload['owner_id'], 
         'editor_id' => (isset($uplaod['editor_id'])) ? $uplaod['editor_id'] : null, 
         'title' => $upload['title'], 
         'crc' => (isset($upload['crc'])) ? $upload['crc'] : null, 
         'payload' => (isset($upload['payload'])) ? $upload['payload'] : null, 
         'database_revision' => Configure::read('Settings.LocalDataBaseRevision'), 
         'version' => 1 // Always set version number to 1 on uploads 
        ) 
       ) 
      ); 
+0

Каковы данные, которые вы хотите сохранить? – Supravat

+0

Я отредактировал свой вопрос, чтобы вы могли видеть формат моих данных. –

+0

Чтобы устранить неполадки, измените Document hasMany Document_revision на стандартное отношение (т. Е. Без 'finderquery'). Если этот 'saveall' работает, то вы знаете его из-за опции« finderquery ». В противном случае это ваш формат массива. Если это из-за 'finderquery', я рекомендую вам иметь 1 hasMany отношение для всех отношений документа (которые вы можете использовать для сохранения) и 1 hasOne отношение для самой последней версии. – AgRizzo

ответ

0
  1. Я забыл префикс имени плагина на отношения модели.

    public $hasMany = array(
        'Document.DocumentVersion' => array(
         'className' => 'DocumentVersion', 
         'foreignKey' => false, 
         'finderQuery' => 'SELECT * FROM document_versions as `DocumentVersion` WHERE `DocumentVersion`.`document_guid` = {$__cakeID__$} ORDER BY `DocumentVersion`.`version` DESC LIMIT 1' 
        )); 
    
  2. я все еще получаю тот же вопрос, на данный момент, однако я, наконец, решен вопрос с помощью глубокой связи в моей экономии метода.

    $ this-> Document-> saveAll ($ data, array ('deep' => true));