Новый вопрос о доктрине - PullRequest
       22

Новый вопрос о доктрине

0 голосов
/ 10 февраля 2010
Select * from tableName order by id desc limit 10

Как выполнить что-то подобное с помощью доктрины в демоверсии?

Ответы [ 2 ]

2 голосов
/ 10 февраля 2010

Внутри класса Table модели (например, tableNameTable.class.php):

function getResults()
{
  $results = self::createQuery("q")
    ->select("q.*")
    ->orderBy("q.id DESC")
    ->limit(10)
    ->execute();

  return $results;
}

даст вам Учебную коллекцию результатов.

0 голосов
/ 11 февраля 2010

По моему опыту, большинство людей не пишут определенные классы таблиц, но используют автоматически сгенерированные классы Doctrine_Record с помощью инструмента CLI.

Если это ваш случай, вы можете сделать что-то вроде

//instantiate your record class
$model = new TableName();

$model->getTable() //returns an instance of Doctrine_Table for current Doctrine_Record 
      ->createQuery() //returns a Doctrine_Query instance with the current table loaded
      ->orderBy("id DESC")
      ->limit(10)
      ->execute();

Если вы обнаружите, что вы всегда упорядочиваете все результаты по ID DESC и ограничиваете все запросы до 10, вы также можете добавить хук в классе записей Doctrine, например, так:

class TableName extends Base_TableName //most Doctrine Records extend a base record with config info
{
   //this hook will order all by id and limit all queries to 10
   public function preDqlSelect(Doctrine_Event $event)
   {
      $event->getQuery()
            ->addOrderBy("id DESC")
            ->limit(10);
   }

}
...