protected function execute($arguments = array(), $options = array()) { // initialize the database connection $databaseManager = new sfDatabaseManager($this->configuration); $connection = $databaseManager->getDatabase($options['connection'])->getConnection(); $pages = PageTable::getInstance()->findAll(); foreach ($pages as $page) { $commit = CommitTable::getFirstCommit($page->getId()); $page->setFirstCommittedYm((int) $commit->getDateTimeObject('committed_at')->format('Ym')); $page->save(); } }
/** * updateFirstCommitted() * * @return */ public function updateFirstCommitted() { $commit = CommitTable::getFirstCommit($this->getId()); $this->setFirstCommitted($commit->getCommittedAt()); $this->setFirstCommittedYm((int) $commit->getDateTimeObject('committed_at')->format('Ym')); $this->save(); }
$t->diag('getInstance()'); $table = CommitTable::getInstance(); $t->ok($table instanceof CommitTable, 'テーブルインスタンス取得'); // レコード取得 $t->diag('findAll()'); $list = $table->findAll(); $t->is(count($list), 2, 'レコード全件取得'); // レコード取得 $t->diag('findOne***()'); $commit = $table->findOneByCommitKey('commit1'); $t->ok($commit instanceof Commit, 'レコードの取得成功'); $t->is($commit->getCommitterHandle(), 'hidenori', '取得したレコードのデータが正常'); // 最新のコミット $t->diag('getLatestCommit()'); // ページを取得しておく $page = PageTable::getInstance()->findOneByPath('/foo/bar'); $commit = CommitTable::getLatestCommit($page->getId()); $t->ok($commit instanceof Commit, 'コミットレコード取得成功'); $t->is($commit->getCommitKey(), 'commit2', 'コミット日付が新しい方のレコード'); $commit = CommitTable::getLatestCommit(-1); $t->is($commit, null, 'ページIDに対応するコミットレコードがない場合は、null'); $commit = CommitTable::getFirstCommit($page->getId()); $t->ok($commit instanceof Commit, 'コミットレコード取得成功'); $t->is($commit->getCommitKey(), 'commit1', 'コミット日付が最初のレコード'); $commit = CommitTable::getFirstCommit(-1); $t->is($commit, null, 'ページIDに対応するコミットレコードがない場合は、null'); // リレーション $commit = $table->findOneByCommitKey('commit1'); $page = $commit->getPage(); $t->ok($page instanceof Page, 'リレーション先のページオブジェクト'); $t->is($page->getPath(), '/foo/bar', 'リレーション先のページオブジェクトが正しい');