2011-01-26 10 views
8

私の教義モデルの既定の順序を宣言する方法があるかどうかは疑問でした。Doctrineモデルの既定の並べ替え属性

私はworkモデルを持っていて、それはphotosです。作品を読み込むと、それに関連付けられたすべての写真が$work->photosに読み込まれます。私がそれらを表示するとき、彼らは彼らのIDによって注文されます。

デフォルトの注文を別のフィールドに宣言するか、フェッチ動作を完全にオーバーライドするのが非常に便利です。

私はむしろ、写真を配列に変換してusortを使用したくないと思います。ありがとう。

答えて

9

次のようにあなたはYAMLでそれを指定することができます。

は、それ自体が、テーブル内のフィールドのソート順を追加しています場合:options:は、あなたがしたいのと同じ深さである

options: 
    orderBy: fieldname 

columns:またはrelations:のエントリがあります。注意:大文字のorderBy:が重要です。それを間違って取得しても、エラーは発生せず、ソートも行われません。

それは関係のためのソート順は関係の中に、あなたはoptions:部分をスキップすることができますし、ただで入れ、その後だ場合:

orderBy: fieldname 
+4

または@OrderByアノテーションでます。http://www.doctrine-project。 org/docs/orm/2.0/ja/reference/annotations-reference.html#annref-orderby – Alex

+0

どのymlファイルでこれを行いますか? – Squazic

+0

です。 doctrine1では、答えは有効です(それはスキーマYAMLファイルに関するものです)が、doctrine2ではそれができません。回避策として、@Alexのコメントを参照してください。 – Frizi

4

OK、私はこの記事には、このおかげでまわりました:私の場合はhttp://www.littlehart.net/atthekeyboard/2010/02/04/sorting-relationship-results-in-doctrine-1-2-2/

を、BaseWork.phpファイルは、この修正を持っていた:

とにかく
public function setUp() 
    { 
     parent::setUp(); 
     $this->hasMany('Photo as photos', array(
      'local' => 'id', 
      'orderBy' => 'display_order', 
      'foreign' => 'work_id')); 

、それは次のようになりますschema.ymlでこれを指定する方が良いでしょう。私は仕事をすることができませんでした。

関連する問題