2016-02-15 11 views
17

मैं स्लिम फ्रेमवर्क 2 में एक स्टैंडअलोन पैकेज के रूप में सफलतापूर्वक उपयोग कर रहा हूं।वांछित त्रुटि: एक मुखौटा रूट सेट नहीं किया गया है

लेकिन अब है कि मैं के बाद से मैं 2 टेबल से जानकारी प्राप्त करने और का उपयोग कर एक वाम जुड़ें और इस तरह डेटाबेस से एक काउंटर से कुछ आंकड़े बताते हैं की जरूरत रोशन \ Support \ Facades \ डीबी का उपयोग करना चाहते हैं:

Type: RuntimeException 
Message: A facade root has not been set. 
File: ...\vendor\illuminate\support\Facades\Facade.php 
Line: 206 

मैं इसे कैसे हल कर सकते हैं:

use Illuminate\Support\Facades\DB; 
$projectsbyarea = DB::table('projects AS p') 
     ->select(DB::raw('DISTINCT a.area, COUNT(a.area) AS Quantity')) 
     ->leftJoin('areas AS a','p.area_id','=','a.id') 
     ->where('p.status','in_process') 
     ->where('a.area','<>','NULL') 
     ->orderBy('p.area_id'); 

मैं निम्नलिखित त्रुटि मिलती है?

अब तक मुझे पता चला है कि this link में मुझे एक नया ऐप कंटेनर बनाने की आवश्यकता है और फिर इसे फेकाडे से बांधना होगा। लेकिन मुझे पता नहीं चला कि इसे कैसे काम करना है।

इस तरह मैं अपने सुवक्ता के बाकी शुरू किया और ठीक काम कर रहा:

use Illuminate\Database\Capsule\Manager as Capsule; 

$capsule = new Capsule(); 

$capsule->addConnection([ 
    'my'   => $app->config->get('settings'), 
    /* more settings ...*/ 
]); 

/*booting Eloquent*/ 
$capsule->bootEloquent(); 

मैं इसे ठीक कैसे करूँ?

फिक्स्ड @ user5972059 के रूप में कहा, मैं सिर्फ ऊपर $capsule->bootEloquent();

फिर, क्वेरी इस तरह क्रियान्वित किया जाता है $capsule->setAsGlobal();//This is important to make work the DB (Capsule) जोड़ने के लिए किया था:

use Illuminate\Database\Capsule\Manager as Capsule; 
$projectsbyarea = Capsule::table('projects AS p') 
      ->select(DB::raw('DISTINCT a.area, COUNT(a.area) AS Quantity')) 
      ->leftJoin('areas AS a','p.area_id','=','a.id') 
      ->where('p.status','in_process') 
      ->where('a.area','<>','NULL') 
      ->orderBy('p.area_id') 
      ->get(); 

उत्तर

22

आप करने के लिए अपने कोड बदलने के लिए:

$Capsule = new Capsule; 
$Capsule->addConnection(config::get('database')); 
$Capsule->setAsGlobal(); //this is important 
$Capsule->bootEloquent(); 

और आपकी कक्षा फ़ाइल की शुरुआत में आपको imp ओआरटी:

use Illuminate\Database\Capsule\Manager as DB; 
+1

मैं इसे कहां रखूं? मुझे लार्वेल 5.4: https://i.gyazo.com/a664efbe34aea117d2bbb8a8ad448951.png –

4

किसी ने उत्तर क्यों चिह्नित किया यह उपयोगी नहीं है कि यह मेरे लिए पूरी तरह से काम करता है। मैं use Illuminate\Support\Facades\DB as DB; का उपयोग कर रहा था लेकिन यह use Illuminate\Database\Capsule\Manager as DB; पर काम करता था, जो कैप्सूल को वैश्विक $capsule->setAsGlobal(); पतला में सेट करने के बाद काम करता था।

+1

को अपग्रेड करने के बाद मुझे यह त्रुटि मिल रही है, मैं इसे कहां रखूं? मुझे लार्वेल 5.4: https://i.gyazo.com/a664efbe34aea117d2bbb8a8ad448951.png –

+0

लार्वेल में डिफॉल्ट रूप से वालोकेंट बूट का विस्तार करने के बाद यह त्रुटि प्राप्त हो रही है, यह स्पष्ट स्टैंडअलोन का उपयोग करना है। आपकी त्रुटि कुछ और pls पूर्ण त्रुटि साझा करते हैं। –

1

मैं इस समस्या को '// $ app-> withFacades()' से पहले '//' असम्बद्धता से हल करता हूं; बूटस्ट्रैप/app.php

2

अनचाहे app.php $ app-> withFacades();

+0

धन्यवाद! मैं इसके बारे में भूल गया था, मेरे लिए काम किया। – Jamesst20

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

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