我有一个只有两列的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();