Как получить случайную запись из базы
Раньше я делал в контролере таким образом:
public function executeRandom()
{
$c = new Criteria();
$this->catalog = CatalogPeer::doSelect($c);
$rand_keys = array_rand($this->catalog, 1);
$this->item= $this->catalog[$rand_keys];
}
Но недавно натолкнулся на более элегантное решение:
public static function getRandomUsers($num=1){
$c = new Criteria();
$c->addAscendingOrderByColumn('rand()');
$c->setLimit($num);
$users = UserPeer::doSelect($c);
return $users;
}
Этот код нужно добавить в класс модели.
Теперь есть возможность получать больше чем одну сулчайную запись, устанавливая параметр $num
Вы можете оставить комментарий или подписаться на RSS feed



Можно сделать и на креоле(если разговор идет о propel 1.2) с помощью след. sql :
SELECT [fields] FROM [table_name] ORDER BY RAND() LIMIT 0, 1;
Если нужно вынуть несколько записей, то достаточно поиграться с лимитом.
.s