लार्वेल 4 प्रोजेक्ट, एलोक्वेंट ओआरएम का उपयोग करके पुनर्प्राप्त करें।लैरवेल: कई से कई लोगों को, अलग-अलग() मान
मेरे पास तीन टेबल हैं: ग्राहक, ऑर्डर और उत्पाद (+ 1 पिवोट टेबल ऑर्डर_प्रॉडक्ट)। ग्राहक ऑर्डर करने के लिए एक से कई जुड़े हुए हैं। ऑर्डर कई से कई उत्पादों से जुड़े हुए हैं।
Customers 1-->N Orders N<-->N Products
मैं ग्राहक मॉडल पर एक विधि चाहूंगा जो ग्राहक खरीद रहे उत्पादों की एक सूची पुनर्प्राप्त करे।
बेहतर समझने के लिए, मान लें कि उत्पाद उपभोग योग्य हैं।
के लिए उदाहरण के ग्राहक # 1 जगह कर सकते हैं:
- आदेश # 1 उत्पाद ए, बी और सी के लिए;
- उत्पाद ए, सी और डी के लिए आदेश # 2;
- उत्पाद सी और ई के लिए आदेश # 3;
... और परिणाम मैं प्राप्त करना चाहते हैं के साथ उत्पाद ए, बी, सी, डी और ई एक संग्रह
मॉडल हैं (मक्खी पर छद्म कोडित):
class Product extends Eloquent {
public function orders()
{
return $this->belongsToMany('Order');
}
}
class Orders extends Eloquent {
public function customer()
{
return $this->belongsTo('Customer', 'customer_id');
}
public function products()
{
return $this->belongsToMany('Product');
}
}
class Customers extends Eloquent {
public function orders()
{
return $this->hasMany('Orders', 'customer_id');
}
public function products()
{
// What to put here ???
}
}
आप हैमैनी थ्रू का उपयोग करने में सक्षम हो सकते हैं और (आमतौर पर-अंतर्निहित) पिवट तालिका को लक्षित कर सकते हैं। कुछ 'वापसी $-- masManyThrough (' ऑर्डर ',' ऑर्डर प्रोडक्ट ') -> (' उत्पाद ') के साथ कुछ;' लेकिन अगर यह काम नहीं करता है तो आपको उस विधि में कुछ मैन्युअल काम करना होगा और एक प्रश्न वापस करें। यह बहुत कठिन नहीं होगा (केवल एक रिश्ते की सुविधा के बिना आप एक प्रश्न बना सकते हैं) लेकिन यह एक मानक रिश्ते के रूप में सुंदर नहीं होगा। – alexrussell
@alexrussell: क्या मुझे इसके लिए पिवट तालिका के लिए एक मॉडल बनाने की आवश्यकता है? इसके अलावा, मेरे कुंग-फू एलोक्वेंट लो-स्तरीय क्वेरी सिस्टम के साथ इतना मजबूत नहीं है, क्या आप वास्तविक कोड (उत्तर के रूप में, शायद) बता सकते हैं? – St0rM
हाँ मुझे लगता है कि आपको ''> हैमैनी थ्रू() -> के साथ()' विधि का उपयोग करने के लिए पिवट तालिका को मॉडल करने की आवश्यकता होगी, अन्यथा लैरवेल को नहीं पता कि पिवोट टेबल को कैसे जोड़ना है (जो आप हैं ' 'हैमनी थ्रू' के बाद 'उत्पाद' तालिका में छोड़ दिया गया है (जो कि पिवट तालिका का 'हैनी' है)। दूसरी तरफ 9as की संभावना है कि 'हैमनी थ्रू' विधि काम नहीं करेगी, मैं देखूंगा कि मैं आपके लिए क्या कर सकता हूं। – alexrussell