新規データ作成やプラグインのマイグレーション作成の際に、既に存在するデータの最大値を取得したい場合があります。

そんな時は直接SQLを発行しても良いのですが、Doctrineを使用すると便利です。

商品IDの最大値を取得する方法(例:dtb_product)
次のようにQueryBuilderで書けます。

        $app = \Eccube\Application::getInstance();

        $maxRank = $app['eccube.repository.product']
            ->createQueryBuilder('p')
            ->select('max(p.id)')
            ->getQuery()
            ->getSingleScalarResult();

Rankの最大値を取得する方法(例:dtb_csv)

        $app = \Eccube\Application::getInstance();

        $maxRank = $app['eccube.repository.csv']
            ->createQueryBuilder('p')
            ->select('max(p.rank)')
            ->getQuery()
            ->getSingleScalarResult();

EC-CUBEをご利用の方は参考にしてみてください。