Laravel7 distinctを使って(重複行を省いて)件数を取得する時は注意が必要!!

普通、レコード件数を取得する時は、get()をcount()に変えるだけで、get()で取得するはずのレコード数が取得できていたのに、distinctを使用した場合は、挙動が違ったのでメモ。

レコードを取得する時は、↓でOK

        $words = Word::distinct()
            ->select('original')
            ->get();

件数を取得したいので、get()をcount()にすると、distinctが効いてない行数が返ってくる!!

        $words = Word::distinct()
            ->select('original')
            ->count();

distinct後の正しい件数を取得するには、↓のようにする

        $count = Word::distinct('original')
            ->count();

これはハマっちゃう人多いんじゃないかと思う。。。

返信を残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です