Doktrin hakkında bir acemi soru

2 Cevap php
Select * from tableName order by id desc limit 10

Bir demo tarafından doktrini ile yukarıdaki gibi bir şey nasıl gerçekleştirilir?

2 Cevap

Modelin Tablo sınıfı (örneğin tableNameTable.class.php) İç:

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

  return $results;
}

Eğer sonuç bir Doktrini Koleksiyonu verecektir.

Benim durumumda çok insan belirli bir tablo sınıfları yazmayın, ama CLI aracıyla otomatik olarak oluşturulan Doctrine_Record sınıflarını kullanın.

Senin Eğer durum buysa, sen gibi bir şey yapabilirsiniz

//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();

Eğer her zaman ID DESC tarafından tüm sonuçları sipariş ve 10 tüm sorguları sınırlayıcı olduğunu bulursanız, siz de bu yüzden gibi Doktrini Record sınıfında bir kanca ekleyebilirsiniz

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

}