public function up(Schema $schema)
{
$app = Application::getInstance();
$repository = $app['orm.em']->getRepository('Eccube\\Entity\\Master\\ProductListOrderBy');
// mtb_product_list_orderbyが初期状態から変更がある場合は、マイグレーションを適用しない
$default = array(array('id' => 1, 'name' => '価格順', 'rank' => 0), array('id' => 2, 'name' => '新着順', 'rank' => 1));
$entities = $repository->createQueryBuilder('pl')->orderBy('pl.id', 'ASC')->getQuery()->getArrayResult();
if ($entities !== $default) {
return;
}
// 価格が高い順を追加
$ProductListOrderBy = new ProductListOrderBy();
$ProductListOrderBy->setId(3);
$ProductListOrderBy->setName('価格が高い順');
$ProductListOrderBy->setRank(2);
$app['orm.em']->persist($ProductListOrderBy);
$app['orm.em']->flush($ProductListOrderBy);
// "価格順"の名称を"価格が低い順"へ変更
$ProductListOrderBy = $repository->find(1);
if (!is_null($ProductListOrderBy) && $ProductListOrderBy->getName() === '価格順') {
$ProductListOrderBy->setName('価格が低い順');
$app['orm.em']->persist($ProductListOrderBy);
$app['orm.em']->flush($ProductListOrderBy);
}
// 価格が低い順->価格が高い順->新着順の順にrankを振り直す
// 価格が低い順
$entity = $repository->find(1);
$entity->setRank(0);
$app['orm.em']->flush($entity);
// 価格が高い順
$entity = $repository->find(3);
$entity->setRank(1);
$app['orm.em']->flush($entity);
// 新着順
$entity = $repository->find(2);
$entity->setRank(2);
$app['orm.em']->flush($entity);
}