2014-12-10 26 views
5

Sorun: Müşterileri yalnızca mevcut yıl için bir sipariş verdiyse almak istiyorum. Müşteriler ve Siparişler iki ayrı Veritabanındadır (bu değişemez). İlişkiler tüm kurulum ve doğru çalışıyor ancak aşağıdakileri denediğimde, 'müşteri' veritabanındaki 'siparişleri' aramaya çalışırken bir SQL hatası almaya devam ediyorum. Laravel'i bu senaryoda doğru veri tabanını kullanmaya zorlamak için var mı?Laravel, iki ayrı veritabanında yer alır

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

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

al Modeli:

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

Müşteri Modeli: önceden

protected $connection = 'mysql2'; 

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

teşekkürler!

+0

sesleri , Müşterilerle birebir ilişki mi? Müşteri modelinde bir sipariş fonksiyonuna ihtiyacınız var. Ayrıca sonuçların gerçekten geri dönmesi için bir get deyimine ihtiyacınız olduğunu düşünüyorum. –

+0

Cevabınız için teşekkürler, orijinal sorumu daha ayrıntılı olarak güncelledim ... – Pedro

+0

http: // fideloper .com/laravel-multiple-database-connections – Sachin

cevap

0

deneyin böyle sorguyu yazmak ve de öyledir gibi veritabanı ve tabloismi koymak>

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

ve lütfen siparişin ve müşteri tablosunun tablo yapısının ne olduğunu bana bildirin, verilerin nasıl kaydedildiğini ölçüyorum. böylece daha fazla netleştirebilirim.İlk önce hangi tablodan almak ve sonra veritabanını değiştirmek ve isim, e-posta, telefon numarası gibi cursotmer bilgisi için ikinci sorguyu çalıştırmak zorunda kalacaksınız. – Sachin

0

bir filtre kullanarak bu çözüldü: ilişkilerle bir sorun var gibi

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')); 
} 
İlgili konular