2011-01-26 9 views
8

के लिए डिफ़ॉल्ट सॉर्ट विशेषता मैं सोच रहा था कि मेरे सिद्धांत मॉडल के लिए डिफ़ॉल्ट आदेश घोषित करने का कोई तरीका है या नहीं।सिद्धांत मॉडल

उदा।

मेरे पास work मॉडल है और इसमें photos है। जब मैं कोई काम लोड करता हूं, तो उससे जुड़ी सभी तस्वीरें $work->photos में लोड हो जाती हैं। जब मैं उन्हें प्रदर्शित करता हूं, तो उन्हें उनके आईडी द्वारा आदेश दिया जाता है।

किसी अन्य फ़ील्ड पर डिफ़ॉल्ट ऑर्डर घोषित करना या संभवतया फ़ेचिंग व्यवहार को ओवरराइड करना बहुत सुविधाजनक होगा।

मैं फ़ोटो को एक सरणी में कनवर्ट नहीं करना चाहता हूं और यूज़ॉर्ट का उपयोग नहीं करना चाहता हूं। धन्यवाद।

उत्तर

9

इस प्रकार आप YAML में यह निर्दिष्ट कर सकते हैं:

यदि यह तालिका में एक क्षेत्र के लिए एक छँटाई आदेश ही जोड़ते हैं:

options: 
    orderBy: fieldname 

जहां options: के रूप में आप चाहते ही गहराई पर है columns: या relations: प्रविष्टि है। एनबी: orderBy: का पूंजीकरण महत्वपूर्ण है; इसे गलत समझें और आपको कोई त्रुटि नहीं मिलेगी लेकिन कोई सॉर्टिंग भी नहीं होगी।

यदि यह एक रिश्ते के लिए एक छंटाई आदेश तो है, रिश्ते के भीतर आप options: भाग को छोड़ सकते हैं और बस में डाल दिया:

orderBy: fieldname 
+4

या @OrderBy एनोटेशन द्वारा: http: //www.doctrine-project। संगठन/दस्तावेज़/ओआरएम/2.0/एन/संदर्भ/एनोटेशन-संदर्भ.html # annref-orderby – Alex

+0

आप कौन सी yml फ़ाइल कर रहे हैं? – Squazic

+0

यह निर्भर करता है। सिद्धांत 1 में, उत्तर मान्य है (और यह स्कीमा वाईएएमएल फ़ाइल के बारे में है), लेकिन सिद्धांत 2 में करना असंभव है। एक कामकाज के रूप में, @ एलेक्स की टिप्पणी देखें। – Frizi

4

ठीक है, मैं चारों ओर इस पोस्ट को यह धन्यवाद मिला: 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 में यह निर्दिष्ट करने के लिए बेहतर है, जिसे मैं काम नहीं कर सका।

संबंधित मुद्दे