Symfony2 Doctrine get random product from a category

后端 未结 2 2165
生来不讨喜
生来不讨喜 2021-02-10 00:56

I have the following database scheme:

table \'products\'
id
category_id

and of course a category table, just with an id.

The data look

2条回答
  •  时光说笑
    2021-02-10 01:57

    You first have to count the total number of products, then generate a random offset to select a random product.

    This should get you started:

    $count = $this->createQueryBuilder('u')
                 ->select('COUNT(u)')
                 ->getQuery()
                 ->getSingleScalarResult();
    

    And then you can generate a random number between your 1 and the total number of rows.

    return $this->createQueryBuilder('u')
        ->where('u.category = :category')
        ->setFirstResult(rand(0, $count - 1))
        ->setMaxResults(1)
        ->setParameter('category', $category->getId())
        ->getQuery()
        ->getSingleResult()
    ;
    

    Which translates to:

    SELECT * FROM products WHERE category_id = ? LIMIT 1, {random offset}
    

提交回复
热议问题