/** * メッセージ保存用テーブルのフィールドを最適化する * 初回の場合、id/created/modifiedを追加する * 2回目以降の場合は、最後のカラムに追加する * * @param array $dbConfig * @param int $mailContentId * @return boolean * @access public */ function construction($mailContentId) { App::import('Model', 'Mail.MailField'); App::import('Model', 'Mail.MailContent'); $mailFieldClass = new MailField(); $mailContentClass = new MailContent(); // フィールドリストを取得 $mailFields = $mailFieldClass->findAll(array('MailField.mail_content_id' => $mailContentId)); // コンテンツ名を取得 $contentName = $mailContentClass->field('name', array('MailContent.id' => $mailContentId)); if (!$this->tableExists($this->getTablePrefixByContentName($contentName) . 'messages')) { /* 初回の場合 */ $this->createTable($contentName); } else { /* 2回目以降の場合 */ $this->tablePrefix = $this->getTablePrefixByContentName($contentName); $this->_schema = null; $this->cacheSources = false; $schema = $this->schema(); $messageFields = array_keys($schema); foreach ($mailFields as $mailField) { if (!in_array($mailField['MailField']['field_name'], $messageFields)) { $this->addField($contentName, $mailField['MailField']['field_name']); } } } return true; }