2014-12-10 9 views
5

समस्या: मैं केवल ग्राहक ही प्राप्त करना चाहता हूं अगर वे पहले से ही चालू वर्ष के लिए ऑर्डर दे चुके हैं। ग्राहक और आदेश दो अलग-अलग डेटाबेस पर हैं (यह नहीं बदला जा सकता है)। रिश्तों सभी सेटअप और सही तरीके से काम कर रहे हैं, लेकिन जब मैं निम्न कोशिश करता हूं तो मुझे एक एसक्यूएल त्रुटि मिलती है क्योंकि यह 'ग्राहकों' डेटाबेस पर 'ऑर्डर' खोजने की कोशिश कर रहा है। क्या इस परिदृश्य में सही डेटाबेस का उपयोग करने के लिए लार्वेल को मजबूर करने के लिए वैसे भी है?लार्वेल जहां दो अलग-अलग डेटाबेस

$customers = $customers->whereHas('orders', function($query){ 
    $query->where('academic_year_id', '=', $this->current_academic_year->id); 
}); 

$customers = $customers->orderBy('DFKEY','ASC')->get(); 

आदेश मॉडल:

public function customer() 
{ 
    return $this->belongsTo('Customer','dfkey'); 
} 

ग्राहक मॉडल:

protected $connection = 'mysql2'; 

public function orders() 
{ 
    return $this->hasMany('Order','dfkey','DFKEY'); 
} 

अग्रिम धन्यवाद! इस तरह क्वेरी लिख सकते हैं और के रूप में यह है- अपने डेटाबेस और tablename डाल करने के लिए

+0

लगता है वहाँ रिश्तों के साथ एक समस्या है की तरह , ग्राहकों के साथ बहुत से रिश्ते का आदेश है? आपको ग्राहक मॉडल में ऑर्डर फ़ंक्शन की आवश्यकता है, साथ ही मुझे लगता है कि वास्तव में परिणाम –

+0

जवाब देने के लिए आपको अंत में एक बयान की आवश्यकता है, उत्तर के लिए धन्यवाद, मैंने अपना मूल प्रश्न अधिक विस्तार से अपडेट किया है ... – Pedro

+0

http: // fideloper .com/laravel-multiple-डेटाबेस-कनेक्शन – Sachin

उत्तर

0

कोशिश>

$customers = Schema::connection('your_database_name')::table('respective_table_name') 
->where('academic_year_id', '=', $this->current_academic_year->id) 
->orderBy('DFKEY','ASC') 
->get(); 
+0

और कृपया मुझे बताएं कि ऑर्डर और ग्राहक तालिका की तालिका संरचना क्या है, मैं समझता हूं कि आप डेटा को कैसे सहेजते हैं। तो मैं इसके बारे में और अधिक स्पष्ट कर सकता हूं।सबसे पहले आपको कौन सी तालिका से प्राप्त करना होगा और फिर डेटाबेस बदलना होगा और नाम, ईमेल, फोन नंबर जैसे कर्सरोट जानकारी के लिए दूसरी क्वेरी चलाएं। – Sachin

0

एक फिल्टर का उपयोग करके इस हल:

public function index() 
{ 
    $customers = new Customer; 
    // Make sure customers are current parents of students 
    $customers = $customers->whereHas('students', function($q) { 
     $q->where('STATUS', '=', 'FULL'); 
    }); 

    //Filter results 
    if(Input::get('academic_year') == 'ordered'){ 
     $customers = $customers->orderBy('DFKEY','ASC')->get(); 
     $filtered = $customers->filter(function($customer) 
     { 
      if ($customer->orders()->where('academic_year_id','=',$this->current_academic_year->id)->first()) { 
       return true; 
      } 
     }); 
     $customers = $filtered; 
     return View::make('admin.customers.index',compact('customers')); 
    } 

    $customers = $customers->orderBy('DFKEY','ASC')->get(); 

    return View::make('admin.customers.index',compact('customers')); 
} 
संबंधित मुद्दे