Doctrine_Core::getTable()-›findAll() bagaimana cara menentukan pesanan?

Saat menggunakan objek Doctrine_Table, apakah mungkin menentukan urutan koleksi yang dikembalikan saat menggunakan findAll() atau findByWhatever()?

Di dokumen saya melihat beberapa hal tentang getOrderByStatement() dan processOrderBy() tetapi ternyata tidak jelas cara menggunakannya...


person Jake Wilson    schedule 19.08.2011    source sumber


Jawaban (4)


Anda juga dapat membiarkan array pertama kosong

  $em->getRepository('BackendDestinyBundle:Destiny')->findBy(array(), array('title'=>'asc'));
person Aaron    schedule 25.03.2013
comment
Baiklah, salahku, jangan menangis, tolong, aku hanya mencoba membantu - person Aaron; 25.03.2013
comment
Terima kasih. Inilah yang saya inginkan. Cepat, sederhana, dan berhasil. - person dnshio; 01.07.2013
comment
ini sebenarnya lebih baik daripada pembuat kueri (menurut saya), lagipula implementasi findAll() adalah panggilan seperti ini findBy(array()) inilah kode sumber - person Mateo Torres; 28.09.2013
comment
Terima kasih! Saya baru saja menggunakan ini: public function findAll() { return $this->findBy(array(), array('name' => 'ASC')); } Untuk dengan cepat menimpa pesanan findAll yang dikembalikan untuk pengembalian formulir suatu entitas. - person Scott Flack; 25.10.2013

Anda sebenarnya dapat menentukan urutan default dalam skema Anda:

Foo:
  columns:
    ...
  options:
    orderBy: bar DESC

Perhatikan bahwa ketika Anda ingin menentukan urutan yang berbeda, Anda masih bisa membuat kueri dan mengganti urutan default.

person Gerry    schedule 19.08.2011
comment
Tidak mengetahui hal itu. Itu sangat membantu. Terima kasih - person Jake Wilson; 19.08.2011
comment
bukankah ini hanya untuk hubungan? - person Flask; 20.08.2011
comment
Tidak, ini juga bisa digunakan untuk model, tapi memang Anda bisa menggunakan trik ini pada relasi juga. - person Gerry; 20.08.2011
comment
Ini bukanlah ide yang bagus. Pemesanan bisa mahal, dan Anda tidak ingin menerbitkannya untuk SETIAP permintaan. - person Mike Purcell; 28.07.2015

Menurut Jon Wage Anda harus membuat Kueri dalam Kasus ini… Ditemukan di mailing- daftar

person Flask    schedule 19.08.2011
comment
Ya, saya pikir itu mungkin satu-satunya solusi, hanya saja saya tidak yakin. Terima kasih - person Jake Wilson; 19.08.2011

Dalam kasus saya, masalahnya adalah saya mendapat pernyataan seperti ini

$destinos  = $em->getRepository('BackendDestinyBundle:Destiny')->findAll();

akhirnya saya mengubahnya menjadi pernyataan CreateQuery, fungsinya persis sama tetapi saya dapat memasukkan kalimat OrderBy

$destinos  = $em->createQuery("SELECT d FROM BackendDestinyBundle:Destiny d order by d.name")->getResult();
person Jorge Ibacache    schedule 14.03.2013
comment
Anda berbicara tentang Doktrin 2 di sini, dan omong-omong, ini bukan cara yang baik untuk menggunakan Doktrin. Harus membuat kueri tanpa menulis kode sql... Anda kehilangan semua keuntungan dari ORM di sini... - person j0k; 14.03.2013
comment
Sebenarnya dia menggunakan ORM cukup baik di sini karena DQL, bukan SQL. - person Łukasz Wojciechowski; 22.09.2013