2016-11-06 8 views
10

मैं लुमेन 5.3.1 का उपयोग कर रहा हूं। और $app->withEloquent() को app.php में अनमोल किया गया है। web.php में मैं निम्नलिखित कोड चलाएँ:डीबी :: कनेक्शन() के लिए लुमेन कॉल (हालांकि) सफल है() सफल है() सफल है

$app->get('foo', function() { 
    return app('db')->select("SELECT * FROM foo"); 

    return "Connected successfully to database " . DB::connection()->getDatabaseName(); 
}); 

select() कॉल सही ढंग से foo तालिका से डेटा देता है। हालांकि, DB::connection() रिटर्न:

FatalErrorException in Manager.php line 74: 
Call to a member function getConnection() on null 

क्यों एक काम है, लेकिन अन्य नहीं करता है?

+0

क्या आपके पास एकाधिक डेटाबेस कॉन्फ़िगर किए गए हैं? क्या आप डीबी :: कनेक्शन (_databasename _) -> getDatabaseName() प्राप्त कर सकते हैं और देख सकते हैं? – blackpen

+0

मैं .env फ़ाइल का उपयोग कर केवल एक कॉन्फ़िगर किया गया है। जब मैंने परिवर्तन किया तो आपने सुझाव दिया कि मुझे एक ही त्रुटि मिलती है। – ebakunin

उत्तर

4

मैं डबल कहेंगे अपने सेवा प्रदाताओं की जाँच करें। ऐसा लगता है कि आप the DB Capsule के माध्यम से जा रहे हैं, वास्तव में जब इसका उद्देश्य लार्वेल/लुमेन से उपयोग करना है। वैसे भी यदि आप वास्तव में कैप्सूल प्रबंधक का उपयोग कर रहे हैं, तो आपको शायद इसे boot प्रदाता के विधि में पंजीकृत करना होगा, register नहीं।

इसके अलावा, क्रम में बाहर के बारे में अधिक जानकारी प्राप्त करने के लिए क्या हो रहा है, अपने परीक्षण कोड से जोड़ें:

dd(app('db'), DB::getFacadeRoot()); 

परिणाम साझा करें यदि आप चाहते हैं, इस दो तरीकों के बीच अंतर के बारे में अधिक जानकारी दे देंगे ।

+0

कोड 'डीबी' से' getFacadeRoot() 'को पहचान नहीं पाया, इसलिए मैंने इसके बजाय 'Auth :: getFacadeRoot()' का उपयोग किया। परिणाम एक बहुत लंबा डेटा डंप है। आप किस जानकारी की तलाश में हैं? – ebakunin

+1

'डीबी' तब एक मुखौटा नहीं है। 'डीडी (डीबी :: कक्षा) 'फिर करें, और यह पता लगाने के लिए कि" डीबी "किस प्रकार से जुड़ा हुआ है, उपनाम और पंजीकृत प्रदाताओं की जांच करें। इसके अलावा, क्या आप किसी भी 'उपयोग' कथन का उपयोग कर रहे हैं? – alepeino

+0

'उपयोग' कथन मुद्दा था। 'डीबी' के रूप में रोशनी \ डेटाबेस \ कैप्सूल \ प्रबंधक का उपयोग करें, मुझे 'कनेक्शन()' विधि तक पहुंच प्रदान की लेकिन सही नहीं। 'उपयोग' कथन को हटाने से समस्या हल हो गई। धन्यवाद! – ebakunin

0
app('db')->select("SELECT * FROM foo"); 
DB::connection()->getDatabaseName(); 

कोशिश

app('db')->connection()->getDatabaseName(); 

या

\DB::connection()->getDatabaseName(); 
संबंधित मुद्दे