model - केक पीएचपी 3.x में मॉडल 'शामिल' मॉडल




cakephp-3.x contain (3)

मेरे पास एक और Things में कई Things हैं I अब अपने AnotherThing Controller में मेरी एडिट एक्शन में उन्हें ऑर्डर करने का प्रयास कर रहा हूं - मैं अपने संपादन में ठीक Things उपयोग कर सकता हूं, लेकिन मैं उन्हें अलग तरह से सॉर्ट करना चाहता हूं (उनकी आईडी पर नहीं), उदाहरण के लिए Things.pos

सबसे अच्छा अभ्यास यहाँ क्या है? मैंने इसके साथ कोशिश की

public $hasMany = array(
        'Thing' => array(
            'order' => 'Thing.pos DESC'
        )
    );

लेकिन कुछ भी नहीं बदला कोई उपाय?


Answers

यदि आपने अपनी संबद्ध तालिका में कुछ कस्टम खोजक विधियों को परिभाषित किया है, तो आप उन्हें () के अंदर उपयोग कर सकते हैं आपके मामले के लिए आप इसे नीचे की तरह हल कर सकते हैं:

$query->contain([
        'Comments' => function ($q) {
           return $q->order(['created'=>'DESC']);
        }
    ]);

प्रलेखन ओवरराइड माफ़ कीजिये!

वैसे भी, अगर कोई जवाब देने की तलाश में है, तो यहां यह है: http://book.cakephp.org/3.0/en/orm/retrieving-data-and-resultsts.html#sorting-contained-associations

संपादित करें:

जब HasMany और BelongsToMany संगठनों को लोड करते हैं, तो आप उन संगठनों में डेटा को सॉर्ट करने के लिए सॉर्ट विकल्प का उपयोग कर सकते हैं:

$query->contain([
    'Comments' => [
        'sort' => ['Comment.created' => 'DESC']
    ]
]);

ActiveRecord एक एकल तालिका ( सिंगल-टेबल विरासत) में मैपिंग विरासत पदानुक्रमों का समर्थन करता है। तालिका में एक कॉलम type जो वास्तविक वर्ग का नाम संग्रहीत करता है और अन्य वर्ग-विशिष्ट कॉलम का चयन करने के लिए उपयोग किया जाता है।

जैसा कि here दिखाया गया here , मल्टी-टेबल विरासत मैपिंग को कार्यान्वित करना संभव here , लेकिन यह विशेष तरीका पोर्टेबल नहीं है, AFAIK।