原则:从名称表中随机获取名称


Doctrine: Get a random name from a table of names

我有一个只有两列的SQL表:"nameid"和"name"。 我想从数据库中获取一个随机名称。

在我通过以下方式执行此操作之前:

    $result = mysql_query("SELECT * FROM nametable",$db);
    $number = mysql_num_rows($result);
    $random = rand(1,$number);
    list($name) = mysql_fetch_row(mysql_query("SELECT name FROM nametable WHERE nameid=$random",$db));

我怎样才能对教义做同样的事情?

MySQL具有生成随机浮点值RAND()的功能。按此排序时,名称将随机排序。在此之后,您只需选择第一个随机排序的名称。

SELECT name FROM nametable ORDER BY RAND() LIMIT 1

有了教义,这可以使用

$name = Doctrine::getTable('nametable')
  ->createQuery()
  ->select('name')
  ->orderBy('RAND()')
  ->fetchOne();