2011-03-24 7 views
6

मेरे पास एक अजीब समस्या है।सिद्धांत 2, अपरिभाषित इकाई विधि findOneBy *

अपरिभाषित विधि MyProject\BlogBundle\Entity\Blog::findOneById()

मैं सेटअप मानचित्रण, इकाई वर्ग कंसोल का उपयोग कर बनाया गया था है और मैं डेटाबेस में स्कीमा अद्यतन किया है करने के लिए कॉल: त्रुटि संदेश यह। इस मुद्दे के कारण क्या हो सकता है?

मैं symfony2 का उपयोग कर रहा हूं। यहां पंक्ति है:

$blogRepo = $this->get('myproject.blog.repository.blog'); 
$blog = $blogRepo->findOneById($id); 

कोई विचार?

उत्तर

8

findOneById मौजूद नहीं है, कोशिश

$ blogRepo-> findOneBy (सरणी ('आईडी' => $ आईडी));

जहां आपकी आईडी में 'आईडी' एक मौजूदा क्षेत्र है।

आप यहाँ सिद्धांत की क्लास प्रलेखन देख सकते हैं: EntityRepository

संपादित करें: लग रहा है findOneById की तरह जब तक इकाई एक क्षेत्र "आईडी" के रूप में मौजूद है। Check the docs। यह उनका कहना है

+0

हां, और '$ इकाई = $ em-> getRepository ('विक्रेता सोमबंडल: पोस्ट') -> findOneById ($ id) 'भी काम करेगा। लेकिन आपको यह सुनिश्चित करना होगा कि पोस्ट इकाई में विशेषता है। यह याद रखना महत्वपूर्ण है कि भंडार symfony1 की '* तालिका' वर्ग के बराबर नहीं है। इकाई पहले से ही मानचित्रण और रिश्ते और वरीयताओं को जानना चाहिए। – renoirb

+1

'findOneById' एक वैध जादू विधि है, मान लीजिए कि इकाई पर एक 'आईडी' फ़ील्ड है। http://docs.doctrine-project.org/en/2.0.x/reference/working-with-objects.html#by-simple-conditions – Ryall

+0

thx यह इंगित करने के लिए thx – Maragues

5

myproject.blog.repository.blog की सेवा परिभाषा क्या है? ऐसा लगता है कि आप इसे MyProject\BlogBundle\Entity\Blog पर मैप कर रहे हैं, जबकि यह वास्तव में MyProject\BlogBundle\Entity\BlogRepository होना चाहिए।

अपनी खुद की रिपोजिटरी कक्षा बनाने के बजाय आप एंटिटी मैनेजर द्वारा फ्लाई पर भी एक बना सकते हैं।

$user = $em->getRepository('MyProject\Domain\User')->find($id); 

या भी कम:

$user = $em->find('MyProject\Domain\User', $id); 

the Doctrine2 ORM Documentation से लिया।

+0

मैं समझने के लिए आप से क्या मतलब चाहते हैं 'MyProject \ डोमेन \ *' यह एक 'Entity' वर्ग है ? – renoirb

+0

हां, 'MyProject \ Domain \ User' एक इकाई है। – igorw

0

के लिए Ryall के लिए Thx इस

$blogRepo = $this->getRepository('myproject.blog.repository.blog'); 
$blog = $blogRepo->findOneById($id); 

getRepository कोशिश