2012-04-09 3 views
0

"nameid"와 "name"의 두 개의 열만있는 SQL 테이블이 있습니다. 데이터베이스에서 임의의 이름을 가져 오려고합니다.Doctrine : 이름 테이블에서 임의의 이름 가져 오기

내가 한 전에이를 통해 :

$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)); 

이 어떻게 교리와 동일한 작업을 수행 할 수 있습니까?

답변

0

MySQL에는 임의 부동 소수점 값 RAND()을 생성하는 함수가 있습니다. 이것을 기준으로 정렬 할 때 이름이 임의로 정렬됩니다. 그런 다음 무작위로 정렬 된 첫 번째 이름을 선택하기 만하면됩니다.

교리와
SELECT name FROM nametable ORDER BY RAND() LIMIT 1 

는,이

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

감사를 사용하여 수행 할 수 있습니다! 나는 그것이 CodeIgniter2 + Doctrine2에서 어떻게 나타날지 당신이 알고 있다고 가정하지 않습니다. :) – jeremy

+0

나는 CodeIgniter로 Doctrine을 사용하는 것이 위와 같을 것이라고 믿는다. Codeigniter의 Active Record를 사용하고자한다면, '$ this-> db-> select ('name ') -> from ('nametables ') -> order_by ('name ','random ' > 제한 (1)'. – kba