I was wondering if there is a way to declare the default order for my doctrine models.
e.g.
I have a work
model and it has photos
. When I load a work, all photos associated to it get loaded into $work->photos
. When I display them, they are ordered by their IDs.
It would be very convenient to declare a default order on another field or perhaps override the fetch behaviour altoghether.
I'd rather not to convert the photos to an array and use usort. Thanks.
You can specify it in the YAML as follows:
If it's a sorting order for a field in the table itself add:
options:
orderBy: fieldname
where options:
is at the same depth as you'd have a columns:
or relations:
entry. NB: The capitalisation of orderBy:
is vital; get it wrong and you'll get no error but also no sorting.
If it's a sorting order for a relationship then, within the relationship you can skip the options:
part and just put in:
orderBy: fieldname
OK, I got around this thanks to this post: http://www.littlehart.net/atthekeyboard/2010/02/04/sorting-relationship-results-in-doctrine-1-2-2/
In my case, the BaseWork.php file had this modifications:
public function setUp()
{
parent::setUp();
$this->hasMany('Photo as photos', array(
'local' => 'id',
'orderBy' => 'display_order',
'foreign' => 'work_id'));
Anyhow, it would be better to specify this in schema.yml, which I couldn't make work.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With