जेएमएस बहिष्करण नीति का उपयोग करें।
उदाहरण पर श्रेणी इकाई है, जहां आप बच्चों और उत्पाद से संबंधित संस्थाओं को शामिल नहीं करना चाहते एनोटेशन का उपयोग शामिल होने के लिए: अधिक जानकारी के लिए JMSSerializer docs पर
use ...
JMS\SerializerBundle\Annotation\ExclusionPolicy,
JMS\SerializerBundle\Annotation\Exclude,
...;
/**
* ...
* @ExclusionPolicy("none")
*/
class Category
{
/**
* ...
* @Exclude
*/
private $children;
/**
* ...
* @Exclude
*/
private $products;
}
देखो।
संपादित करें:
उदाहरण आप केवल डेटा है कि आप की जरूरत का चयन करने के आंशिक कीवर्ड का उपयोग कर सकते है। हालांकि, मैं नहीं कर सकता था, मेरे जीवन के लिए, पूर्ण संबंधित इकाइयों (दो स्तर नीचे) की लोडिंग को अक्षम करें यदि मैं धारावाहिक को इकाई ऑब्जेक्ट पास करता हूं (यहां तक कि DoctrineProxyHandler में लोड अक्षम करते समय भी), लेकिन यदि मैं किसी सरणी का उपयोग करता हूं, यह प्रॉक्सी (हालांकि उम्मीद की गई) के रूप में सिद्धांत आलसी लोडिंग का उपयोग नहीं करता है।
उदाहरण अपने उदाहरण संस्थाओं का उपयोग कर:
$dql = "SELECT t, s, partial b.{id}, partial ss.{id}
FROM Acme\AppBundle\Entity\Task t
JOIN t.story s
JOIN s.board b
JOIN b.stories ss"
$q = $this->_em-createQuery($dql);
$result = $q->getArrayResult();
इस तरह से आप की तरह कुछ मिलेगा:
[
{
id: 33,
title: "My Task",
story: [
{
id: 554,
board: [
{
id: 14,
stories: [
{
id: 554
},
{
id: 3424
},
{
id: 3487
}
]
}
]
}
]
}
]
पी.एस. मैं वास्तव में इस "समस्या" से चिंतित हूं। वैसे भी मैं सरणी परिणाम का उपयोग किए बिना इकाई ऑब्जेक्ट को क्रमबद्ध करने के समाधान के साथ आना चाहूंगा।
स्रोत
2012-08-14 16:25:33
मुझे लगता है कि काफी एक ही सवाल बेन यहां पोस्ट की है: http://stackoverflow.com/questions/6706485/how-to-encode-doctrine-entities-to -जसन-इन-सिम्फनी-2-0-अजैक्स-एप्लिकेशन। आपको JMSSerializer का उपयोग करके कुछ जवाब मिलेंगे या नहीं। –